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 :
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.
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));
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
![]()
Partager