Oracle SQL Developer: execute script, continue em caso de erro
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
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 acontecerwhenever 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
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'