Mardi 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
Par Daniel Roesch - Publié dans : ORACLE PLSQL
Ecrire un commentaire - Voir les 0 commentaires
Retour à l'accueil

Rechercher Articles Oracle SQL sur ce Site.

Loading

À lire aussi…

Download PDF Oracle

Rechercher sur le site

Oracle 10G - DBA -

Syndication

  • Flux RSS des articles
Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés