Našel jsem zde zajímavý nápad, který mi v kombinaci s odpovědí spencer7593 získá selektivní volání dílčího skriptu, kterému mohu předat výstupní hodnoty PL/SQL. Pro vtip:
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
Kde skip.sql
je prázdný textový soubor.
AKTUALIZACE: Většinu z toho jsem přesunul do RUN.SQL
soubor, kam předám boolean (0 nebo 1) jako &1
, název skriptu, který má vyvolat úspěch, jako &2
a poté jakékoli další očekávané parametry, které se předají volanému skriptu. Takže to nakonec vypadá nějak takto:
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