Oracle SQL Developer: esegui script, continua in caso di errore

Sep 02 2020

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

4 RobertoHernandez Sep 02 2020 at 18:50

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 continue indica allo script di continuare indipendentemente dall'errore che potrebbe verificarsi
  • whenever sqlerror exit failure ordina allo script di interrompere e uscire dall'esecuzione in caso di errore.

Riferimento al comando e alle opzioni disponibili

ogni volta che sqlerror

thatjeffsmith Sep 02 2020 at 19:32

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