0% ont trouvé ce document utile (0 vote)
92 vues22 pages

Types et gestion des exceptions en PL/SQL

Transféré par

djangotest801
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
92 vues22 pages

Types et gestion des exceptions en PL/SQL

Transféré par

djangotest801
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Les types d’exceptions

Les exceptions prédéfinies


Les exceptions définies par l’utilisateur
Propagation des exceptions

PL / SQL
Les exceptions

Ines BAKLOUTI
[email protected]

Ecole Supérieure Privée d’Ingénierie et de Technologies


Les types d’exceptions
Les exceptions prédéfinies
Les exceptions définies par l’utilisateur
Propagation des exceptions

Plan

1 Les types d’exceptions

2 Les exceptions prédéfinies

3 Les exceptions définies par l’utilisateur


Redéclaration des exceptions prédéfinies
Déclencher des exceptions explicitement

4 Propagation des exceptions

2/22
Les types d’exceptions
Les exceptions prédéfinies
Les exceptions définies par l’utilisateur
Propagation des exceptions

Introduction

Une exception est tout avertissement (warning) ou erreur détecté lors de


la compilation d’un bloc PL/SQL.
Les exceptions dûes au erreurs de compilation peuvent être levées à cause
de défauts syntaxiques, erreurs de codages, et plusieurs autres sources.
Vous ne pouvez pas anticiper toutes les exceptions possibles, mais vous
pouvez ecrire des gestionnaires d’exception qui permettent à votre
programme de continuer à fonctionner en leur présence.
Chaque bloc PL/SQL peut avoir une partie de gestion d’exception, qui
peut avoir un ou plusieurs gestionnaire d’exception.

3/22
Les types d’exceptions
Les exceptions prédéfinies
Les exceptions définies par l’utilisateur
Propagation des exceptions

Introduction

4/22
Les types d’exceptions
Les exceptions prédéfinies
Les exceptions définies par l’utilisateur
Propagation des exceptions

Plan

1 Les types d’exceptions

2 Les exceptions prédéfinies

3 Les exceptions définies par l’utilisateur


Redéclaration des exceptions prédéfinies
Déclencher des exceptions explicitement

4 Propagation des exceptions

5/22
Les types d’exceptions
Les exceptions prédéfinies
Les exceptions définies par l’utilisateur
Propagation des exceptions

Les types d’exceptions


Exception prédéfinie: est une exception définie en interne par PL/SQL et est
levée implicitement par le serveur oracle. Par exemple: NO DATA FOUND,
TOO MANY ROWS, etc.
Exception définie par l’utilisateur: Vous pouvez déclarer vos propres exceptions
dans la partie déclarative d’un bloc PL / SQL anonyme, sous-programme
(procédure, fonction ou trigger), ou package.

Exception Possède code Possède un nom Levée Levée


erreur implicitement explicitement

Prédéfinie toujours toujours oui optionellement


Définie par seulement si vous toujours non toujours
l’utilisateur y accordez un
code

Les fonctions d’interception des exceptions:


SQLCODE : renvoie la valeur numérique du code d’erreur
SQLERRM : renvoie le message associé au code d’erreur
6/22
Les types d’exceptions
Les exceptions prédéfinies
Les exceptions définies par l’utilisateur
Propagation des exceptions

Plan

1 Les types d’exceptions

2 Les exceptions prédéfinies

3 Les exceptions définies par l’utilisateur


Redéclaration des exceptions prédéfinies
Déclencher des exceptions explicitement

4 Propagation des exceptions

7/22
Les types d’exceptions
Les exceptions prédéfinies
Les exceptions définies par l’utilisateur
Propagation des exceptions

Les exceptions prédéfinies


Syntaxe
DECLARE
/* déclarations */
BEGIN
/* traitements */
EXCEPTION
WHEN exception1 [OR exception2 . . .] THEN
statement1; statement2;
. . .
[WHEN exception3 [OR exception4 . . .] THEN
statement1; statement2;
. . .]
[WHEN OTHERS THEN
statement1; statement2;
. . .]
END;
8/22
Les types d’exceptions
Les exceptions prédéfinies
Les exceptions définies par l’utilisateur
Propagation des exceptions

Les exceptions prédéfinies

Les exceptions prédéfinies les plus utilisées sont:

Nom de l’exception Code


NO DATA FOUND +100
TOO MANY ROWS -1422
ZERO DIVIDE -1476
DUP VAL ON INDEX -1
INVALID CURSOR -1001
CURSOR ALREADY OPEN -6511
INVALID NUMBER -1722
ROWTYPE MISMATCH -6504

9/22
Les types d’exceptions
Les exceptions prédéfinies
Les exceptions définies par l’utilisateur
Propagation des exceptions

Les exceptions prédéfinies

Exemple 1
DECLARE
lname VARCHAR2(15);
BEGIN
SELECT last name INTO lname FROM employees
WHERE first name=’John’;
DBMS OUTPUT.PUT LINE (’Le nom de John est : ’ ||lname);
EXCEPTION
WHEN TOO MANY ROWS THEN
DBMS OUTPUT.PUT LINE (’La requête revoie plusieurs lignes, utilisez un
curseur’);
WHEN NO DATA FOUND THEN
DBMS OUTPUT.PUT LINE (’Aucun employé ne porte le prénom John’);
END;

10/22
Les types d’exceptions
Les exceptions prédéfinies
Les exceptions définies par l’utilisateur
Propagation des exceptions

Les exceptions prédéfinies

Exemple 2
CREATE OR REPLACE PROCEDURE pr nom(prenom varchar2) IS
lname VARCHAR2(15);
BEGIN
SELECT last name INTO lname FROM employees
WHERE first name=prenom;
DBMS OUTPUT.PUT LINE (’Le nom de ’|| prenom||’ est : ’ ||lname);
EXCEPTION
WHEN TOO MANY ROWS THEN
DBMS OUTPUT.PUT LINE (’La requête revoie plusieurs lignes, utilisez un curseur’);
WHEN OTHERS THEN
ROLLBACK;
DBMS OUTPUT.PUT LINE(’code de l”erreur : ’||SQLCODE);
DBMS OUTPUT.PUT LINE(’message de l”erreur : ’||SQLERRM);
END;

11/22
Les types d’exceptions
Les exceptions prédéfinies Redéclaration des exceptions prédéfinies
Les exceptions définies par l’utilisateur Déclencher des exceptions explicitement
Propagation des exceptions

Plan

1 Les types d’exceptions

2 Les exceptions prédéfinies

3 Les exceptions définies par l’utilisateur


Redéclaration des exceptions prédéfinies
Déclencher des exceptions explicitement

4 Propagation des exceptions

12/22
Les types d’exceptions
Les exceptions prédéfinies Redéclaration des exceptions prédéfinies
Les exceptions définies par l’utilisateur Déclencher des exceptions explicitement
Propagation des exceptions

Redéclaration des exceptions prédéfinies

Exemple
DECLARE
a number:=100;
b number:=0;
division zero EXCEPTION;
PRAGMA EXCEPTION INIT(division zero,-01476);
BEGIN
a:=a/b;
EXCEPTION
WHEN division zero THEN
DBMS OUTPUT.PUT LINE(’ERREUR: Division par 0’);
END;

13/22
Les types d’exceptions
Les exceptions prédéfinies Redéclaration des exceptions prédéfinies
Les exceptions définies par l’utilisateur Déclencher des exceptions explicitement
Propagation des exceptions

Déclencher des exceptions explicitement

14/22
Les types d’exceptions
Les exceptions prédéfinies Redéclaration des exceptions prédéfinies
Les exceptions définies par l’utilisateur Déclencher des exceptions explicitement
Propagation des exceptions

Avec le mot clé RAISE


Syntaxe
DECLARE
exception name EXCEPTION; – déclarer l’exception
[PRAGMA EXCEPTION INIT(exception name,error code)];
...
BEGIN
...
RAISE exception name; – déclencher l’exception
EXCEPTION
WHEN exception name THEN – gérer l’exception
– traitement;
. . .
END;
15/22
Les types d’exceptions
Les exceptions prédéfinies Redéclaration des exceptions prédéfinies
Les exceptions définies par l’utilisateur Déclencher des exceptions explicitement
Propagation des exceptions

Avec le mot clé RAISE

Exemple
CREATE OR REPLACE PROCEDURE pr check salary (current salary number) IS
salary too high EXCEPTION; – déclarer l’exception
PRAGMA EXCEPTION INIT(salary too high,-20100); – associer optionellement le code -20100
à l’exception
max salary NUMBER := 10000;
BEGIN
IF current salary > max salary THEN
RAISE salary too high; – déclencher l’exception
END IF;
EXCEPTION
WHEN salary too high THEN – gérer l’exception
DBMS OUTPUT.PUT LINE(’ERREUR : ’||SQLCODE);
DBMS OUTPUT.PUT LINE(’MESSAGE : ’||SQLERRM);
DBMS OUTPUT.PUT LINE(’Salaire ’||current salary||’ est très élevé’);
DBMS OUTPUT.PUT LINE (’Le salaire maximum est ’ || max salary);
END;

16/22
Les types d’exceptions
Les exceptions prédéfinies Redéclaration des exceptions prédéfinies
Les exceptions définies par l’utilisateur Déclencher des exceptions explicitement
Propagation des exceptions

Avec la procédure RAISE APPLICATION ERROR

Syntaxe
RAISE APPLICATION ERROR (error number, message);
Avec:
Error number représente un entier négatif compris entre -20000 et
-20999
message représente le texte du message d’erreur d’une longueur
maximum de 2048 octets

La procédure RAISE APPLICATION ERROR peut être utilisée à


deux endroits :
Section exécutable
Section de traitement des exceptions

17/22
Les types d’exceptions
Les exceptions prédéfinies Redéclaration des exceptions prédéfinies
Les exceptions définies par l’utilisateur Déclencher des exceptions explicitement
Propagation des exceptions

Avec la procédure RAISE APPLICATION ERROR


Exemple 1
BEGIN
DELETE FROM employees WHERE manager id = 500;
IF SQL%NOTFOUND THEN
RAISE APPLICATION ERROR(-20200, ’Numéro de manager non valide’);
END IF;
END;

Exemple 2

DECLARE
mgr id NUMBER;
BEGIN
SELECT manager id INTO mgr id FROM employees WHERE employee id=300;
EXCEPTION
WHEN NO DATA FOUND THEN
RAISE APPLICATION ERROR (-20999, ’Numéro d”employé non valide’);
END;
18/22
Les types d’exceptions
Les exceptions prédéfinies
Les exceptions définies par l’utilisateur
Propagation des exceptions

Plan

1 Les types d’exceptions

2 Les exceptions prédéfinies

3 Les exceptions définies par l’utilisateur


Redéclaration des exceptions prédéfinies
Déclencher des exceptions explicitement

4 Propagation des exceptions

19/22
Les types d’exceptions
Les exceptions prédéfinies
Les exceptions définies par l’utilisateur
Propagation des exceptions

Propagation des exceptions


Exemple 1

20/22
Les types d’exceptions
Les exceptions prédéfinies
Les exceptions définies par l’utilisateur
Propagation des exceptions

Propagation des exceptions


Exemple 2

21/22
Les types d’exceptions
Les exceptions prédéfinies
Les exceptions définies par l’utilisateur
Propagation des exceptions

Propagation des exceptions


Exemple 3

22/22

Vous aimerez peut-être aussi