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