Oracle SQL Developer: execute script, continue em caso de erro

Sep 02 2020

Estou usando o SQL Developer 20.2 para executar scripts em lote para atualizações do banco de dados Oracle 12c. Eu arrasto e solto o arquivo de script na janela do editor e, em seguida, pressiono o botão "Executar script (F5)". Por alguma razão, o programa para se o script for executado em um erro (instruções DDL - nenhum lançamento explícito de uma função PL/SQL).

Exemplo:

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;

A dropinstrução pode apresentar um erro porque a sequência não existe. O SQL*Plus ignora esse erro e continua a executar o script, mas o SQL Developer interrompe a execução, resultando em uma atualização incompleta do patch.

O que eu posso fazer?

Respostas

4 RobertoHernandez Sep 02 2020 at 18:50

SqlDeveloper por padrão para quando encontra um erro. Você pode alterar esse comportamento usando isto:

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;

Exemplo

Explicação

  • whenever sqlerror continueinstrui o script a continuar, não importa qual erro possa acontecer
  • whenever sqlerror exit failureinstrui o script a parar e sair da execução em caso de erro.

Referência ao comando e opções disponíveis

sempre que sqlerror

thatjeffsmith Sep 02 2020 at 19:32

Isso não deveria estar acontecendo. Por padrão, o SQL Developer executa todo o conteúdo do editor ou o que você selecionou ao pressionar F5.

drop sequence my_seq;  

create sequence my_seq
  start with 1
increment by 1
    minvalue 1
    maxvalue 9999999999
       cache 100
       cycle;

F5

Você pode ver que o drop falha, mas continua no CREATE. Isso foi tudo em um 'go'