Vous êtes sur la page 1sur 13

73

Objectifs du cours
1. Les Exceptions prédéfinies

2. Les Exceptions définies

3. Utilisation des exceptions dans des programmes PL/SQL

(Reconnaître les exceptions non gérées, répertorier et utiliser les

différents types de gestionnaire d'exceptions PL/SQL, intercepter les

erreurs non prédéfinies, personnaliser les messages d'exception PL/SQL


74

Définition des exceptions


La section EXCEPTION permet d'affecter un traitement aux erreurs survenues
lors de l'exécution d'un bloc PL/SQL. On distingue 2 types d'erreurs:
▪ erreurs internes du serveur Oracle
▪ erreurs programme utilisateur

▪ Exception prédéfinie Exception déclenchée


du serveur Oracle implicitement
▪ Exception non prédéfinie
du serveur Oracle

▪ Exception définie Exception déclenchée


par l'utilisateur explicitement
75

Traitement des exceptions


L'exception Interrompre
est-elle interceptée ? brutalement
Non l'exécution

Oui
Exception Exécuter les Propager
générée instructions
l'exception
de la section
EXCEPTION

Interrompre
correctement
l'exécution
76

Exception prédéfinie oracle.


Exemples d’exception prédéfinies internes du serveur oracle :
77

Exemple1 . Exception prédéfinie Oracle (1/2)

Var a number;
BEGIN
Select department_name into :a from departments;
END;
/
78

Exemple1 . Exception prédéfinie Oracle (2/2)

correction
BEGIN
Select department_name into :a from departments;

Exception
When too_many_rows then dbms_output.put_line(‘plusieurs
lignes’);
END;
/
79

Exemple2 . Exception prédéfinie Oracle (1/2)

DECLARE
b departments.department_name%type;
A number :=1;
BEGIN
Select department_name into b from departments where
department_id=a;
Dbms_output.put_line(b);
END;
/
80

Exemple2 . Exception prédéfinie Oracle (2/2)

correction
DECLARE
b departments.department_name%type; A number :=1;
BEGIN
Select department_name into b from departments where
department_id=a;
Dbms_output.put_line(b);
Exception
When no_data_found then dbms_output.put_line(‘pas de donées’);
END;
/
81

Exception définie oracle. Syntaxe

DECLARE
nom_erreur EXCEPTION ;
PRAGMA EXCEPTION_INIT(nom_erreur, sql_code_erreur);
BEGIN
EXCEPTION
WHEN nom_erreur THEN (traitement) ;
[WHEN OTHERS THEN (traitement) ;] ;
END;
/
82

Exception définie oracle. Exemple

SQL> create table org_level(


2 company_id number(8) not null,
3 org_level varchAR2(1) not null
4 );

SQL> DECLARE
2 test EXCEPTION;
3 PRAGMA EXCEPTION_INIT(test, +100);
4 BEGIN
5 select company_id into :a from or_level where org_level=‘test’;
6 EXCEPTION WHEN test THEN
7 dbms_output.put_line('Organization Level invalide ');
8 END;
9 /
83

Exception définie par l’utilisateur. Syntaxe

DECLARE
<déclarations>
1 Déclarer l’exception
nom_erreur EXCEPTION ;
BEGIN
<instructions>
IF (anomalie) THEN
RAISE nom_erreur ; 2 Évoquer l’exception
<instructions>
EXCEPTION
WHEN nom_erreur THEN (traitement) ;
3 Définir l’exception
END; /

Vous aimerez peut-être aussi