Regroupement des exceptions
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:
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:
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:
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:
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
:cry: