Les exceptions en PL/SQL
Le PL/SQL offre un moyen d’identifier et de traiter les éventuelles erreurs à l’aide du mécanisme des exceptions.
Nous nous allons voir comment définir, déclencher et traiter les exceptions en PL/SQL.
Le bloc PL/SQL possède comme structure type, celle-ci :
[DECLARE]
déclarations et initialisation
BEGIN
instructions exécutables
[EXCEPTION]
interception des erreurs
END;
Dans un premier temps nous allons créer un bloc PL/SQL avec une erreur sans la gestion exception.
Puis allons capturer l’erreur avec un la gestion d’exception.
DECLARE
sName USERS.NAME%TYPE;
BEGIN
BEGIN
SELECT NAME INTO sName FROM USERS WHERE 0 = 1;
DBMS_OUTPUT.PUT_LINE( sName ) ;
END;
DBMS_OUTPUT.PUT_LINE( 'Le script continue.' ) ;
END;
/
eh la ! Oracle nous envoi une belle erreur !
On voit que le script s’est arrête dès l’apparition de l’erreur.

error 01403 pl sql
On va capturer l’erreur en déclarant une exception.
Voici ce que cella va donnée :
DECLARE
sName USERS.NAME%TYPE;
BEGIN
BEGIN
SELECT NAME INTO sName FROM USERS WHERE 0 = 1;
DBMS_OUTPUT.PUT_LINE( sName ) ;
EXCEPTION
WHEN NO_DATA_FOUND then
DBMS_OUTPUT.PUT_LINE( 'Il n''y a aucun utilisateur.' ) ;
END;
DBMS_OUTPUT.PUT_LINE( 'Le script continue.' ) ;
END;
/
note à part : pour mettre échapper un caractère en PL/SQL, il faut simplement le doubler . ex :
(‘ => »)
( » => »")
( =>\)
Après exécution du bloc, on voit que l’erreur n’apparait pas (elle est capturée) et que le script continu à tourner

exception-data-not-found



(4 votes, moyenne: 3,50 max : 5)
octobre 22nd, 2010 at 10 h 55 min
Bonjour,
Je découvre le PL/SQL depuis deux heures, grâce à vos tutos qui sont courts et de ce fait facilement accessibles, mais, de grâce, soignez l’orthographe et la conjugaison, ainsi que la cohérence entre le texte et le code (noms de variables différents ou erronés dans le code), etc.
Dans celui-ci, la ligne DBMS_OUTPUT.PUT_LINE( ‘Le script continue.’ ); est ambigüe et cela aurait peut être réclamé une petite phrase telle que « Lors de la survenue d’une erreur, l’exécution est transférée à la section EXCEPTION du bloc puis le contrôle est redonné au bloc de niveau supérieur et non à la ligne qui suit celle qui a provoqué l’erreur. », ce qui aurait permis d’expliquer comment et pourquoi vous avez imbriqué deux blocs.
Mais je ne suis pas expert du tout, et la vérité est peut être ailleurs encore
Merci.