Comme indiqué dans l'introduction de la gestion des exceptions PL/SQL, il existe trois façons de déclarer des exceptions définies par l'utilisateur. Parmi ces trois manières, nous avons déjà appris les deux premières manières de déclarer une exception définie par l'utilisateur en utilisant
- Soumettre une déclaration et
- Procédure Raise_Application_Error
La seule façon qui reste à discuter maintenant est de déclarer des exceptions définies par l'utilisateur à l'aide de la fonction PRAGMA EXCEPTION_INIT dans Oracle Database.
Ainsi, dans ce tutoriel PL/SQL, nous apprendrons comment déclarer une exception PL/SQL définie par l'utilisateur dans Oracle Database en utilisant la fonction PRAGMA EXCEPTION_INIT.
Qu'est-ce que PRAGMA EXCEPTION_INIT ?
Pragma Exception_Init est une instruction en deux parties où la première partie est constituée du mot-clé PRAGMA et la deuxième partie est l'appel Exception_Init.
Mot clé PRAGMA
Un pragma est une directive du compilateur qui indique que les instructions suivies du mot clé PRAGMA est une instruction de directive du compilateur, ce qui signifie que l'instruction sera traitée au moment de la compilation et non au moment de l'exécution.
PRAGMA Exception_Init
Exception_init vous aide à associer un nom d'exception à un numéro d'erreur Oracle. En d'autres termes, nous pouvons dire qu'en utilisant Exception_Init, vous pouvez nommer l'exception.
Pourquoi nommer l'exception ?
Oui, il existe un moyen de déclarer une exception définie par l'utilisateur sans le nom et c'est en utilisant la procédure Raise_Exception_Error. C'est en effet un moyen simple et facile, mais comme nous l'avons appris dans le dernier tutoriel, pour gérer les exceptions sans nom, nous utilisons le gestionnaire d'exceptions OTHERS.
Maintenant, pensez que dans votre projet, vous avez plusieurs exceptions et cela aussi sans nom. Afin de gérer toutes ces exceptions, vous disposez d'un seul gestionnaire d'exceptions nommé OTHERS. Dans ce cas, lors de l'occurrence d'une condition d'exception, le compilateur affichera la pile d'erreurs produite par le gestionnaire OTHER.
Pouvez-vous imaginer à quel point il sera difficile de retracer la partie de votre projet qui est à l'origine de l'erreur. Afin de tracer cette partie, vous devez parcourir chaque ligne de votre code. Ce ne sera qu'une perte de temps.
Vous pouvez économiser tous ces efforts de perte de temps simplement en nommant l'exception, de cette façon vous pouvez concevoir un gestionnaire d'exception spécifique au nom de votre exception qui sera facilement traçable. C'est l'avantage de nommer l'exception.
Syntaxe de Pragma Exception_Init.
PRAGMA EXCEPTION_INIT (exception_name, error_number);
Exemple :Déclarer une exception définie par l'utilisateur à l'aide de Pragma Exception_Init
DECLARE ex_age EXCEPTION; age NUMBER := 17; PRAGMA EXCEPTION_INIT(ex_age, -20008); BEGIN IF age<18 THEN RAISE_APPLICATION_ERROR(-20008, 'You should be 18 or above for the drinks!'); END IF; DBMS_OUTPUT.PUT_LINE('Sure! What would you like to have?'); EXCEPTION WHEN ex_age THEN DBMS_OUTPUT.PUT_LINE(SQLERRM); END; /
J'ai expliqué en détail cet exemple dans mon didacticiel vidéo sur ma chaîne YouTube. Je vous demanderais de consulter le didacticiel là-bas.
Pourquoi utiliser PRAGMA EXCEPTION_INIT avec RAISE_APPLICATION_ERROR ?
Bien qu'il ne soit pas obligatoire d'utiliser PRAGMA EXCEPTION_INIT avec la procédure RAISE_APPLICATION_ERROR, il s'agit plus d'une préférence personnelle que d'une règle de programmation. Si vous souhaitez imprimer un message d'erreur avec un numéro d'erreur comme la manière standard d'Oracle d'afficher une erreur, il est recommandé d'utiliser PRAGMA EXCEPTION_INIT avec la procédure RAISE_APPLICATION_ERROR.
Mais si vous voulez juste imprimer le message d'erreur et non le numéro d'erreur, vous pouvez utiliser PRAGMAEXCEPTION_INIT avec l'instruction RAISE.
C'est le tutoriel PL/SQL sur la façon de déclarer une exception définie par l'utilisateur dans Oracle Database à l'aide de PRAGMA EXCEPTION_INIT. J'espère que vous avez appris quelque chose de nouveau. Si vous trouvez ce tutoriel informatif, partagez-le sur vos réseaux sociaux. Merci et bonne journée !