Ich habe hier eine interessante Idee gefunden, die mir in Kombination mit der Antwort von spencer7593 einen selektiven Subskriptaufruf bringt, an den ich die PL/SQL-Ausgabewerte übergeben kann. Nämlich:
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
Wobei skip.sql
ist eine leere Textdatei.
AKTUALISIERUNG: Ich habe das meiste davon in eine RUN.SQL
verschoben Datei, wo ich den booleschen Wert (0 oder 1) als &1
übergebe , der Skriptname, der bei Erfolg als &2
aufgerufen werden soll , und dann alle anderen erwarteten Parameter, die an das aufgerufene Skript übergeben werden sollen. Somit sieht es am Ende etwa so aus:
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