Oracle SQL Developer: ejecutar script, continuar en caso de error
Estoy usando SQL Developer 20.2 para ejecutar scripts por lotes para las actualizaciones de la base de datos Oracle 12c. Arrastro y suelto el archivo de secuencia de comandos en la ventana del editor y luego presiono el botón "Ejecutar secuencia de comandos (F5)". Por alguna razón, el programa se detiene si la secuencia de comandos se encuentra con un error (declaraciones DDL, sin lanzamiento explícito de una función PL / SQL).
Ejemplo:
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;
La dropdeclaración puede encontrar un error porque la secuencia no existe. SQL * Plus ignora ese error y continúa ejecutando el script, pero SQL Developer detiene la ejecución, lo que da como resultado una actualización incompleta del parche.
¿Qué puedo hacer?
Respuestas
SqlDeveloper se detiene por defecto cuando encuentra un error. Puedes cambiar ese comportamiento usando esto:
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;
Ejemplo
Explicación
whenever sqlerror continueindica al script que continúe sin importar qué error pueda ocurrirwhenever sqlerror exit failureindica al script que detenga y salga de la ejecución en caso de error.
Referencia al comando y opciones disponibles
siempre que sqlerror
Eso no debería estar pasando. De forma predeterminada, SQL Developer ejecuta todo el contenido del editor o lo que haya seleccionado cuando presiona F5.
drop sequence my_seq;
create sequence my_seq
start with 1
increment by 1
minvalue 1
maxvalue 9999999999
cache 100
cycle;
F5
Puede ver que la gota falla, pero continúa en CREAR. Todo esto fue de una sola vez