Ho trovato un'idea interessante qui che, se combinata con la risposta di spencer7593, mi porterà a una chiamata selettiva di subscript, a cui posso passare i valori di output PL/SQL. Ad esempio:
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
Dove skip.sql
è un file di testo vuoto.
AGGIORNAMENTO: Ho spostato la maggior parte di questo in un RUN.SQL
file, dove passo il booleano (0 o 1) come &1
, il nome dello script da chiamare in caso di successo come &2
, e quindi qualsiasi altro parametro previsto da passare allo script chiamato. Quindi, finisce per assomigliare a questo:
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