Bonjour,
ça fait plusieurs heures que j'essaie, sans succès, de faire quelque chose qui me paraît pourtant simple ...
en gros, un "ami" ma laissé un script sql qui lui-même contient des appels à des scripts sql par la commande @. Ces scripts contiennent des instructions DDL.
Ca marche bien sauf que je n'arrive pas à intercepter les éventuelles erreurs et du coup arrêter mon traitement ...
En bref :
script1.sql lancé par un .bat ou un .sh
et script2.sql, le script contenant les DDL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 set serveroutput on size 1000000; set linesize 1000 set pagesize 0 set feedback on set heading off set arraysize 7 set echo on set verif off set termout on set trims on set show off spool "&6" Whenever sqlerror Exit Failure ; PROMPT appel script2 @script2.sql -- le script DDL show sqlcode -- affiche tout le temps 0 -- ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Whenever sqlerror Exit Failure ; CREATE OR REPLACE procedureblabla(code_retour out number) as BEGIN END; /
Le script2 provoque une erreur, ce qui me donne dans la console/le log :
Avertissement : Procédure créée avec erreurs de compilation.
Mais je suis bien incapable de detecter cette erreur par programmation.
La solution du "Whenever sqlerror" semblait bonne mais bon, en fait non ...
Et je n'ai pas envie de passer par du PL et de l'execute immediate (il y a trop de scripts DDLs).
Avez-vous une idée que je puisse exploiter ?
Merci d'avance
In
Partager