Znalazłem tutaj ciekawy pomysł, który w połączeniu z odpowiedzią spencer7593 pozwoli mi na selektywne wywołanie indeksu dolnego, do którego mogę przekazać wartości wyjściowe PL/SQL. To znaczy:
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
Gdzie skip.sql
to pusty plik tekstowy.
AKTUALIZACJA: Przeniosłem większość tego do RUN.SQL
plik, w którym przekazuję wartość logiczną (0 lub 1) jako &1
, nazwa skryptu do wywołania w przypadku powodzenia jako &2
, a następnie wszelkie inne oczekiwane parametry do przekazania do wywoływanego skryptu. W rezultacie wygląda to mniej więcej tak:
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