Académique Documents
Professionnel Documents
Culture Documents
Définition
Fonctionnement
Exemples
Exceptions
Page 1
Gérer les exceptions
Exceptions: 2 types
Page 2
Types d’exception
PL/SQL permet de gérer plusieurs types d’exception
Page 3
Liste d’exceptions prédéfinies
PL/SQL permet d’utiliser plusieurs mots clé identifiant chaque exception prédéfinie
DECLARE
Définition Ne rien définir dans le bloc PL/SQL
BEGIN
Déclenchement automatique sous le contrôle du serveur Oracle.
Déclenchement
Page 4
Exceptions non prédéfinies - règles
BEGIN
Déclenchement automatique sous le contrôle du serveur Oracle
Déclenchement
Interception
WHEN nom_d’exception THEN - - -;
BEGIN
- - -
EXCEPTION
END;/
© Base de données Avancees / M.MOURCHID, 2022-2023
Page 5
Exception définie par l’utilisateur: règles
La prise en compte des erreurs prédéfinies respecte des règles
EXCEPTION
Utiliser le mot clé identifiant l’erreur dans la structure de
Interception choix :
Déclenchement:
RAISE Nom_exception ;
Page 6
Exception définie par l’utilisateur
Déclenchement:
RAISE Nom_exception ;
DECLARE
…..
Nom_exception EXCEPTION;
BEGIN
Instructions ;
IF ( condition_erreur ) THEN RAISE Nom_exception ;
…………….
EXCEPTION
WHEN Nom_exception THEN traitements ;
END ;
Remarques:
on sort du bloc après l’exécution du traitement d’erreur.
Les règles de visibilité des exceptions sont les mêmes que celle des
variables.
© Base de données Avancees / M.MOURCHID, 2022-2023
Page 7
Propagation des exceptions
Exemple complet
Exemple:DECLARE
CURSOR employe_rabat IS
SELECT nomemp, sal FROM employe WHERE ville= ‘ Rabat’ ;
nom employe.nomemp%TYPE ;
salaire employe.sal %TYPE ;
ERR_salaire EXCEPTION ;
BEGIN
OPEN employe_rabat;
FTECH employe_rabat INTO nom, salaire ;
WHILE employe_rabat%found LOOP
IF salaire IS NULL THEN
RAISE ERR_salaire ;
…………………..
EXCEPTION
WHEN ERR_salaire THEN
INSERT INTO temp ( nomempl, ‘ salaire non définie’ ) ;
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE(‘Pas d’employe');
END ;
© Base de données Avancees / M.MOURCHID, 2022-2023
Page 8
Exception "others "
Exemple complet
Exemple:DECLARE
salaire employe.sal %TYPE ;
SAL_nulle EXCEPTION ;
code number ;
message char (50);
BEGIN
SELECT sal INTO salaire from employe;
IF salaire= 0 THEN
RAISE SAL_nulle;
END IF
EXCEPTION
WHEN SAL_nulle THEN
-- gérer erreur salaire
WHEN TOO_MANY_ROWS THEN
-- gérer erreur trop de lignes
WHEN NO_DATA_FOUND THEN
-- gérer erreur pas de lignes
WHEN OTHERS THEN
-- gérer toutes les autres erreurs
code:= sqlcode ;
message:= sqlerrm ;
dbms_output.put_line ( ‘erreur: ‘ || code || message );
END ;
Page 9
Fonction RAISE_APPLICATION_ERROR
Code_erreur : code erreur renvoyé doit etre compris entre -20000 et -20999
Message: une chaine de caracteres qui comporte le message qui sera affiché
Nom_exception EXCEPTION;
BEGIN
RAISE_APPLICATION_ERROR ( -20000, ‘ exception utilisateur anonyme’) ;
END ;
Page 10