Jag har hittat en intressant idé här som, i kombination med spencer7593s svar, ger mig selektiva subscript-anrop, som jag kan skicka PL/SQL-utgångsvärdena till. Alltså:
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
Där skip.sql
är en tom textfil.
UPPDATERING: Jag har flyttat det mesta till en RUN.SQL
fil, där jag skickar in boolean (0 eller 1) som &1
, skriptnamnet för framgång som &2
, och sedan alla andra förväntade parametrar att skickas till det anropade skriptet. Det slutar alltså med att det ser ut ungefär så här:
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