Tôi đã tìm thấy một ý tưởng thú vị ở đây, khi kết hợp với câu trả lời của spencer7593, sẽ giúp tôi gọi tập lệnh con có chọn lọc, mà tôi có thể chuyển các giá trị đầu ra PL / SQL. Nói một cách thông minh:
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
Nơi skip.sql
là một tệp văn bản trống.
CẬP NHẬT: Tôi đã chuyển hầu hết điều này vào một RUN.SQL
tệp, nơi tôi chuyển vào boolean (0 hoặc 1) dưới dạng &1
, tên tập lệnh để gọi thành công là &2
, và sau đó bất kỳ tham số mong đợi nào khác để chuyển đến tập lệnh được gọi. Do đó, nó sẽ trông giống như thế này:
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