sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo salgo de una secuencia de comandos en SQLPlus cuando se produce un error y vuelvo al indicador de SQLPlus sin desconectarme ni salir de SQLPlus?

Encontré una idea interesante aquí que, cuando se combina con la respuesta de spencer7593, me dará una llamada de subíndice selectiva, a la que puedo pasar los valores de salida PL/SQL. A saber:

VAR continue number;
EXEC :continue := 1;
BEGIN
   SELECT some_bool_test() INTO :continue FROM dual;
END;

SET termout OFF
COLUMN script_name NEW_VALUE v_script_name
SELECT decode(:continue, 1, 'run_stuff.sql', 'skip.sql') script_name FROM dual;
SET termout ON

@&v_script_name :some_other_values

Donde skip.sql es un archivo de texto vacío.
 

ACTUALIZACIÓN: He movido la mayor parte de esto a un RUN.SQL archivo, donde paso el valor booleano (0 o 1) como &1 , el nombre del script para invocar el éxito como &2 y luego cualquier otro parámetro esperado para pasar al script llamado. Por lo tanto, termina luciendo algo como esto:

VAR continue number;
EXEC :continue := 1;
BEGIN
   SELECT some_bool_test() INTO :continue FROM dual;
END;

@run.sql :continue 'run_stuff.sql' :some_other_values