Bonjour,
je voudrais récupérer la pile d'exception (avec à chaque fois la procédure appelante, le numéro de ligne et l'erreur Oracle). J'ai essayé avec la fonction DBMS_UTILITY.FORMAT_ERROR_STACK mais je ne retrouve que la dernière erreur, et pas toute la pile (et pas de numéro de ligne etc...).
Exemple :
J'ai juste sur la sortie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Il me faudrait cette information dans le WHEN OTHERS, donc dans le handler d'exception. J'ai bien essayé DBMS_UTILITY.FORMAT_CALL_STACK, mais, comme il est appelé dans le WHEN OTHERS, il me retourne la ligne où il est appelé et pas la ligne où est survenue l'erreur (logique).
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2ORA-01422: l'extraction exacte ramène plus que le nombre de lignes demandé
Pourtant, cela doit être possible car quand j'utilise un outil tel que TOAD j'ai bien une pile d'erreur...
Quelqu'un sait-il comment faire?
Je propose une piste, mais attention c'est un peu compliqué :
en réalité, j'appelle une procédure dans un package qui me permet de gérer les erreurs. Cette procédure ressemble à ceci :
Dans les autres procédures du package, je fais ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
J'appelle donc onError() dans toutes les procédures et fonctions du package pour stocker les erreurs dans une table. Mais s'il existe un moyen de mettre un "handler d'exception sur le package" pour dire à Oracle que toutes les erreurs non catchées dans les procédures doivent être envoyées à ce handler, cela me permettrait sans doute d'utiliser DBMS_UTILITY.FORMAT_CALL_STACK.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
Est-ce que quelqu'un sait si ceci est possible dans un PACKAGE BODY?

 

 
		
		 
         
			
			

 
   


 [Gestion Exceptions] Comment utiliser la pile d'exception
 [Gestion Exceptions] Comment utiliser la pile d'exception
				 Répondre avec citation
  Répondre avec citation


 
			 
   
 
 
  
  
 
 
			
Partager