Les erreurs non gérées en PL/SQL peuvent arrêter brutalement un programme.
Cela cause des interruptions coûteuses et complique le débogage.
L’article explore comment gérer les exceptions PL/SQL pour un code fluide et robuste.
Maîtriser le langage SQL en environnement SGBDR. SQL n'aura plus de secrets pour vous !
Lorsque vous écrivez du code PL/SQL, il est essentiel de gérer les erreurs potentielles afin de garantir une exécution fluide et de capturer les problèmes dès qu’ils surviennent. Les exceptions en PL/SQL permettent de réagir aux erreurs de manière structurée, de personnaliser les messages d’erreur et de contrôler le flux d’exécution pour éviter l’arrêt brutal du programme.
Créer des Exceptions PL/SQL Efficaces
Pour créer une exception dans un bloc PL/SQL , vous devez ajouter une section EXCEPTION après les instructions principales de votre bloc BEGIN . La syntaxe est simple : vous indiquez l’exception que vous souhaitez gérer avec le mot-clé WHEN suivi d’une ou plusieurs exceptions. Vous pouvez aussi ajouter WHEN OTHERS pour capturer toute autre erreur non spécifiée.
DECLARE
-- Déclaration des variables
BEGIN
-- Instructions PL/SQL
EXCEPTION
WHEN [ OR ... ] THEN
;
...
WHEN OTHERS THEN
;
END;
Utiliser les Exceptions Prédéfinies PL/SQL
Dans PL/SQL, certaines exceptions sont prédéfinies pour gérer les erreurs les plus courantes sans avoir besoin d’ajouter de logique complexe. Ces exceptions sont accessibles directement et se trouvent dans le package STANDARD . Vous pouvez ainsi gérer ces erreurs simplement et efficacement.
Voici quelques exemples d’exceptions prédéfinies et leurs codes d’erreur correspondants :
Exception | Code d’erreur | SQLCODE |
---|---|---|
NO_DATA_FOUND | ORA-01403 | +100 |
CURSOR_ALREADY_OPEN | ORA-6511 | -6511 |
ZERO_DIVIDE | ORA-01476 | -1476 |
CASE_NOT_FOUND | ORA-6592 | -6592 |
Tableau 1 : exemples d’exceptions prédéfinies
Ces exceptions vous aident à éviter des erreurs fréquentes, comme la division par zéro ou la tentative de récupération de données inexistantes.
Exemples de Gestion d'Exceptions PL/SQL
Il est toujours plus facile d’apprendre en voyant comment cela fonctionne concrètement. Voici deux exemples pour illustrer la gestion des exceptions dans PL/SQL.
- Exemple 1 :Gérer l’absence de données
Dans cet exemple, vous cherchez un nom de salarié spécifique dans la table salaries. Si le nom Dodo n’est pas trouvé, l’exception NO_DATA_FOUND sera déclenchée et affichera un message personnalisé pour signaler que le salarié n’existe pas.
SET SERVEROUTPUT ON;
DECLARE
var_nom salaries.nom_sal%TYPE := 'Dodo';
BEGIN
SELECT nom_sal INTO var_nom
FROM salaries
WHERE nom_sal = var_nom;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Le salarié dont le nom est ' || var_nom || ' n\'existe pas.');
END;
La sortie de ce code dépendra de l’existence d’une ligne dans la table salaries dont la colonne nom_sal a pour valeur ‘Dodo’.
Si un salarié nommé ‘Dodo’ existe dans la table salaries :
- Le bloc BEGIN…END s’exécute sans déclencher l’exception, mais comme il n’y a aucune instruction d’affichage, il n’y aura aucune sortie visible.
Si aucun salarié nommé ‘Dodo’ n’existe dans la table salaries :
- L’exception NO_DATA_FOUND sera levée, et le message suivant sera affiché :
- Exemple 2 :Gérer plusieurs exceptions
Dans ce deuxième exemple, vous sélectionnez un nom de salarié sans condition de filtrage. Cela peut poser problème s’il y a plus d’une ligne correspondante. Vous pouvez gérer cette situation en ajoutant WHEN OTHERS pour capturer toute autre exception que NO_DATA_FOUND, ce qui permet d’afficher un message général d’erreur.
SET SERVEROUTPUT ON;
DECLARE
var_nom salaries.nom_sal%TYPE;
BEGIN
SELECT nom_sal INTO var_nom
FROM salaries;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Aucun salarié trouvé avec le nom ' || var_nom);
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('Plusieurs lignes correspondent à cette requête.');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Une erreur inconnue est survenue.');
END;
Dans cet exemple, nous avons ajouté l’exception TOO_MANY_ROWS, une exception prédéfinie pour gérer les erreurs de requêtes qui retournent plus d’une ligne. Elle vous permet de réagir immédiatement si le résultat de la requête n’est pas unique, vous garantissant un contrôle précis de la sortie du programme.
En utilisant ces exceptions prédéfinies, vous pouvez capturer de manière efficace des erreurs potentielles et adapter vos messages d’erreur pour une meilleure clarté et gestion des problèmes dans vos programmes PL/SQL.
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 créer une exception en PL/SQL ?
Quelles sont les exceptions prédéfinies en PL/SQL ?
Comment gérer plusieurs exceptions en PL/SQL ?
Pourquoi est-il important de gérer les exceptions en PL/SQL ?
Comment les exceptions PL/SQL améliorent-elles le flux d'exécution ?
Conclusion
En maîtrisant la gestion des exceptions en PL/SQL, vous renforcez la fiabilité et l’efficacité de votre code. Quelles autres stratégies utilisez-vous pour optimiser votre gestion des erreurs en programmation ?