Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment quitter un script dans SQLPlus lorsqu'une erreur se produit et revenir à l'invite SQLPlus, sans se déconnecter ni quitter SQLPlus ?

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

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