Oracle SQL Developer: esegui script, continua in caso di errore
Sto usando SQL Developer 20.2 per eseguire script batch per gli aggiornamenti del database Oracle 12c. Trascino il file dello script nella finestra dell'editor e poi premo il pulsante "Esegui script (F5)". Per qualche motivo il programma si interrompe se lo script viene eseguito in un errore (istruzioni DDL - nessun lancio esplicito di una funzione PL / SQL).
Esempio:
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' dropistruzione potrebbe riscontrare un errore perché la sequenza non esiste. SQL * Plus ignora quell'errore e continua a eseguire lo script, ma SQL Developer interrompe l'esecuzione risultando in un aggiornamento della patch incompleto.
Cosa posso fare?
Risposte
SqlDeveloper per impostazione predefinita si interrompe quando rileva un errore. Puoi cambiare quel comportamento usando questo:
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;
Esempio
Spiegazione
whenever sqlerror continueindica allo script di continuare indipendentemente dall'errore che potrebbe verificarsiwhenever sqlerror exit failureordina allo script di interrompere e uscire dall'esecuzione in caso di errore.
Riferimento al comando e alle opzioni disponibili
ogni volta che sqlerror
Non dovrebbe succedere. Per impostazione predefinita, SQL Developer esegue l'intero contenuto dell'editor o qualunque cosa tu abbia selezionato quando premi F5.
drop sequence my_seq;
create sequence my_seq
start with 1
increment by 1
minvalue 1
maxvalue 9999999999
cache 100
cycle;
F5
Puoi vedere che il rilascio fallisce, ma continua su CREATE. Questo è stato tutto in una volta