Oracle SQL Developer: exécuter le script, continuer en cas d'erreur
J'utilise SQL Developer 20.2 pour exécuter des scripts par lots pour les mises à jour de la base de données Oracle 12c. Je fais glisser et déposer le fichier de script dans la fenêtre de l'éditeur, puis clique sur le bouton "Exécuter le script (F5)". Pour une raison quelconque, le programme s'arrête si le script rencontre une erreur (instructions DDL - pas de lancement explicite d'une fonction PL / SQL).
Exemple:
drop sequence my_seq; -- sequence may not exist yet
create sequence my_seq
start with 1
increment by 1
minvalue 1
maxvalue 9999999999
cache 100
cycle;
L' dropinstruction peut rencontrer une erreur car la séquence n'existe pas. SQL * Plus ignore cette erreur et continue d'exécuter le script, mais SQL Developer arrête l'exécution, ce qui entraîne une mise à jour incomplète du correctif.
Que puis-je faire?
Réponses
SqlDeveloper s'arrête par défaut lorsqu'il détecte une erreur. Vous pouvez modifier ce comportement en utilisant ceci:
whenever sqlerror continue;
drop sequence my_seq; -- sequence may not exist yet, in case of error continue
-- then we want to stop in error
whenever sqlerror exit failure;
create sequence my_seq
start with 1
increment by 1
minvalue 1
maxvalue 9999999999
cache 100
cycle;
Exemple
Explication
whenever sqlerror continuedemande au script de continuer quelle que soit l'erreur qui pourrait survenirwhenever sqlerror exit failuredemande au script d'arrêter et de quitter l'exécution en cas d'erreur.
Référence à la commande et aux options disponibles
chaque fois que sqlerror
Cela ne devrait pas arriver. Par défaut, SQL Developer exécute tout le contenu de l'éditeur ou tout ce que vous avez sélectionné lorsque vous appuyez sur F5.
drop sequence my_seq;
create sequence my_seq
start with 1
increment by 1
minvalue 1
maxvalue 9999999999
cache 100
cycle;
F5
Vous pouvez voir que la suppression échoue, mais elle continue sur le CREATE. Tout cela en une seule fois