Bonjour,

Je travaille avec ORACLE 9I (release 9.2.0.1.0)

Comment faire un gestionnaire d’exception.

Je m’explique. Voici un package qui contient trois procédures. Chaque procédure a son propre bloc d’exception.
----------------------------------------------------------------------
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
21
22
23
24
25
26
CREATE OR REPLACE PACKAGE TEST_EXCEPTION
AS
  PROCEDURE VERIFICATION_1;
 
  PROCEDURE VERIFICATION_2;
 
  PROCEDURE VERIFICATION_3;
 
END TEST_EXCEPTION;
 
CREATE OR REPLACE PACKAGE BODY TEST_EXCEPTION
AS
 
PROCEDURE VERIFICATION_1
IS 
 
 l_application                integer;  
--
BEGIN 
   l_application := 1 / 0; 
 
EXCEPTION
    WHEN ZERO_DIVIDE
  THEN
       dbms_output.put_line(sqlcode || ' ' ||  substr(sqlerrm,1,200));  
 END VERIFICATION_1;
------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
PROCEDURE VERIFICATION_2
IS 
 
 l_application   varchar2(1); 
BEGIN 
   l_application := 'ABC'; 
 
EXCEPTION
    WHEN VALUE_ERROR
  THEN
      dbms_output.put_line(sqlcode || ' ' ||  substr(sqlerrm,1,200));
 END VERIFICATION_2;
--------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
PROCEDURE VERIFICATION_3
IS 
 l_application   INTEGER; 
BEGIN 
   l_application := 'A'; 
EXCEPTION
    WHEN INVALID_NUMBER
  THEN
      dbms_output.put_line(sqlcode || ' ' ||  substr(sqlerrm,1,200));
END VERIFICATION_3;
 
END TEST_EXCEPTION;
---------------------------------------------------------------------------------------------------------

Ce que je voudrais faire, c’est de regrouper les erreurs dans une procédure genre comme suit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
EXCEPTION 
    WHEN INVALID_NUMBER
  THEN
      dbms_output.put_line(sqlcode || ' ' ||  substr(sqlerrm,1,200));
          WHEN VALUE_ERROR
  THEN
      dbms_output.put_line(sqlcode || ' ' ||  substr(sqlerrm,1,200));
    WHEN ZERO_DIVIDE
  THEN   
      dbms_output.put_line(sqlcode || ' ' ||  substr(sqlerrm,1,200));
Et dès qu’une erreur se produit dans le package on appel cette procédure et on exécute la bonne erreur au lieu que chaque procedure a sa propre exception.

Y-a-t-il quelqu'un qui a déjà résolu une problématique comme cela et quelle serait la bonne solution ?

Merci de votre aide