Gérer les erreurs en PL/SQL peut être complexe sans une approche structurée.
Les erreurs non gérées peuvent conduire à des applications instables, difficiles à maintenir.
Cet article explore l’utilisation des exceptions anonymes et PRAGMA EXCEPTION_INIT pour une gestion efficace des erreurs en PL/SQL.
Maîtriser le langage SQL en environnement SGBDR. SQL n'aura plus de secrets pour vous !
L’objectif de cette section est de vous apprendre à utiliser les exceptions anonymes dans PL/SQL. Vous verrez comment récupérer les informations des erreurs grâce aux fonctions SQLCODE et SQLERRM, ainsi qu’à utiliser PRAGMA EXCEPTION_INIT pour lier des exceptions personnalisées aux erreurs Oracle spécifiques.
Utiliser SQLCODE et SQLERRM en PL/SQL
Fonction | Description |
---|---|
SQLCODE | Cette fonction retourne un code numérique unique associé à l’erreur Oracle qui a été déclenchée. Ce code permet d’identifier rapidement la nature de l’erreur, qu’elle soit système ou utilisateur. Utiliser SQLCODE dans le bloc d’exception permet de réagir spécifiquement à certains codes d’erreurs et d’adapter le comportement du programme en fonction de l’erreur détectée. |
SQLERRM | Cette fonction retourne le message texte détaillé associé à l’erreur Oracle déclenchée, fournissant ainsi une description de l’erreur. SQLERRM est particulièrement utile pour afficher ou enregistrer un message compréhensible en rapport avec l’exception, facilitant la compréhension des erreurs et leur correction. |
Tableau 1 : Description de fonctionne SQLCODE et SQLERRM
En utilisant SQLCODE et SQLERRM, vous pouvez configurer des messages d’erreurs personnalisés et anticiper certains types de problèmes en fonction des codes d’erreur spécifiques, rendant votre application plus robuste et fiable.
Associer PRAGMA EXCEPTION_INIT en PL/SQL
Le PRAGMA EXCEPTION_INIT est utilisé pour associer une exception personnalisée à un code d’erreur Oracle spécifique. Cela permet de gérer des erreurs particulières avec un nom d’exception défini par l’utilisateur.
Voici la syntaxe d’utilisation EXCEPTION_INIT
DECLARE
EXCEPTION;
PRAGMA EXCEPTION_INIT(, );
BEGIN
-- Votre code PL/SQL
EXCEPTION
WHEN THEN
;
END;
Exemple d'exceptions anonymes en PL/SQL
Supposons que vous vouliez intercepter une erreur de violation de contrainte unique avec un message spécifique :
DECLARE
erreur_unique EXCEPTION;
PRAGMA EXCEPTION_INIT(erreur_unique, -1); -- Associe l'erreur -1 (violations de contraintes uniques) à 'erreur_unique'
BEGIN
-- Code provoquant potentiellement une violation de contrainte unique
INSERT INTO clients (NUMERO_CLI, NOM) VALUES (1, 'Dupont');
EXCEPTION
WHEN erreur_unique THEN
DBMS_OUTPUT.PUT_LINE('Erreur : Une entrée avec cette clé existe déjà.');
END;
Explication de l’exemple
Dans cet exemple, nous utilisons l’instruction PRAGMA EXCEPTION_INIT pour lier une exception personnalisée erreur_unique au code d’erreur -1, qui est le code Oracle pour une violation de contrainte unique. Une violation de contrainte unique se produit lorsque l’on essaie d’insérer une ligne dans une table alors qu’une autre ligne avec la même clé existe déjà.
Déclaration de l’Exception
:
Nous déclarons une exception personnalisée erreur_unique.
Association avec le Code Oracle
:
En utilisant PRAGMA EXCEPTION_INIT(erreur_unique, -1);, nous associons cette exception au code Oracle -1. Cela signifie que chaque fois qu’une erreur -1 se produit, notre exception erreur_unique sera déclenchée.
Bloc BEGIN…EXCEPTION :
- Insertion :Le bloc BEGIN tente d’insérer un enregistrement dans la table clients avec un id de 1.
- Exception :Si une contrainte unique est violée (par exemple, si un enregistrement avec l’ID 1 existe déjà), l’exception erreur_unique est déclenchée.
Gestion de l’Exception
:
Lorsque l’exception erreur_unique est attrapée, le programme exécute la commande DBMS_OUTPUT.PUT_LINE pour afficher un message indiquant que l’enregistrement existe déjà.
Sortie attendue
Si une ligne avec id = 1 existe déjà dans la table clients, la sortie sera :
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment utiliser les exceptions anonymes en PL/SQL?
Qu'est-ce que PRAGMA EXCEPTION_INIT et comment s'en servir?
Comment SQLCODE et SQLERRM aident-ils à gérer les erreurs?
Pourquoi associer une exception personnalisée à un code d'erreur Oracle?
Quel est un exemple pratique de PRAGMA EXCEPTION_INIT?
Conclusion
En maîtrisant les exceptions anonymes et PRAGMA EXCEPTION_INIT, vous pouvez renforcer la gestion des erreurs dans vos applications PL/SQL. Comment pourriez-vous appliquer ces techniques pour améliorer vos propres projets PL/SQL?