Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
17 mai 2011 2 17 /05 /mai /2011 17:10

 

Oracle PL/SQL Gestion EXCEPTION Utilisateur avec RAISE.

Comment définir une EXCEPTION non associée à une erreur Oracle ?

PL/SQL permet de definir ses propres EXCEPTIONS, avec la commande RAISE qui interrompt le programme et transfère au gestionnaire d'EXCEPTION.

La déclaration du nom de l'exception doit se trouver dans la partie déclarative.

Voici un exemple (avec et sans gestion des erreurs) ou PLSQL soulève :

EXCEPTION UTILISATEUR e_dept_innexistant car le département 45 n'existe pas dans la base.
On s’aperçoit que pour la même requête nous avons deux messages bien différent.

APPEL EXCEPTION UTILISATEUR avec RAISE.

 
 SQL> SET SERVEROUTPUT ON; SQL> BEGIN 2 DELETE FROM scott.emp WHERE deptno = 45; 3 COMMIT; 4 dbms_output.put_line('Lignes departement 45 supprimees'); 5  END; 6 / Lignes departement 45 supprimees PL/SQL procedure successfully completed. 
 
 SQL> SET SERVEROUTPUT ON; SQL> DECLARE 2 e_dept_innexistant EXCEPTION; 3 BEGIN 4 DELETE FROM scott.emp WHERE deptno = 45; 5 IF sql%NOTFOUND THEN 6 RAISE e_dept_innexistant; 7 END IF; 8 COMMIT; 9 dbms_output.put_line('Lignes departement 45 supprimees'); 10 11 EXCEPTION 12 WHEN e_dept_innexistant THEN 13 dbms_output.put_line('Departement 45 innexistant'); 14 WHEN OTHERS THEN 15 dbms_output.put_line('Autres Erreurs'); 16 END; 17 / Departement 45 innexistant PL/SQL procedure successfully completed. 

 

Lorsque le traitement a été transferé du bloc BEGIN dans le BLOC EXCEPTION, il n'est plus possible de revenir dans le corps du bloc BEGIN (sauf utilisation de blocs imbriquées).
Quand le programme prend en compte l’erreur dans une entrée WHEN, les instructions de cette entrée sont exécutées et le programme se termine.

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Oracle PL-SQL ERROR ZERO_DIVIDE EXCEPTION
• Oracle PL-SQL NO_DATA_FOUND TOO_MANY_ROWS EXCEPTIONS
• Oracle PL-SQL Structure d'un BLOC
• Oracle PL-SQL SELECT INTO
• Oracle PL-SQL Variables %TYPE %ROWTYPE

Partager cet article

Repost 0
Published by Daniel Roesch - dans ORACLE PLSQL
commenter cet article

commentaires