[SQL] gestion des erreurs
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:
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:
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.