Saya telah menemukan ide menarik di sini yang, ketika dikombinasikan dengan jawaban spencer7593, akan membuat saya panggilan sub-skrip selektif, yang dapat saya berikan nilai output PL/SQL. Yaitu:
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
Dimana skip.sql
adalah file teks kosong.
PERBARUI: Saya telah memindahkan sebagian besar dari ini ke RUN.SQL
file, di mana saya meneruskan boolean (0 atau 1) sebagai &1
, nama skrip untuk memanggil sukses sebagai &2
, lalu parameter lain yang diharapkan untuk diteruskan ke skrip yang dipanggil. Jadi, akhirnya terlihat seperti ini:
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