Bonjour,

je voudrais lancer 3 spool a la suite mais si un spool s'est mal passé je voudrais ne pas lancer les autres spool et logger le problème dans une table. Actuellement, j'ai un script principal, et 1 script par spool. Je ne sais pas ou recuperer mon erreur et faire mon update en consequence.

Je ne vous mets pas toutes mes tentatives j'ai essayé de mettre un update dans le script d'extract et si le spool se passe mal l'update en ok ne se fait pas mais le problème c'est que s'il y a un problème dans le script d'extract, il sort aussi de mon script principal.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
--script principal
@c:\extract_1.sql
--controle si la table de log a été mise à jour avec un statut ok on continue
--si ko on sort du script
@c:\extract_2.sql
@c:\extract_3.sql

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
--un script d'extract
WHENEVER SQLERROR EXIT SQL.SQLCODE
spool c:\toto.txt
SELECT sysdate FROM dual;
spool off
--ici mon update mettant le staut à ok
UPDATE TECH_STEP SET STATUS='OK' WHERE LOAD_NUMBER=1234;
La meilleure solution est-elle de passer par une procédure stockée (=> curseur, utl_file pour écrire mon fichier) pour mieux gérer les erreurs ?

Merci d'avance.