Намерих интересна идея тук, която, когато се комбинира с отговора на spencer7593, ще ми накара селективно извикване на подскрипт, на който мога да предам изходните стойности на PL/SQL. А именно:
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
Където skip.sql
е празен текстов файл.
АКТУАЛИЗИРАНЕ: Преместих по-голямата част от това в RUN.SQL
файл, където предавам булевата (0 или 1) като &1
, името на скрипта за извикване при успех като &2
, а след това всички други очаквани параметри, които да предадат на извикания скрипт. Така в крайна сметка изглежда нещо подобно:
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