J'ai trouvé une idée intéressante ici qui, lorsqu'elle est combinée avec la réponse de spencer7593, me permettra d'appeler un sous-script sélectif, auquel je peux transmettre les valeurs de sortie PL/SQL. A savoir :
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
Où skip.sql
est un fichier texte vide.
MISE À JOUR : J'ai déplacé la plupart de cela dans un RUN.SQL
file, où je passe le booléen (0 ou 1) comme &1
, le nom du script à appeler en cas de succès sous la forme &2
, puis tous les autres paramètres attendus à transmettre au script appelé. Ainsi, cela finit par ressembler à ceci :
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