0% ont trouvé ce document utile (0 vote)
65 vues8 pages

Exceptions

Le document décrit les exceptions en PL/SQL, y compris les exceptions prédéfinies, les exceptions utilisateurs, la portée des exceptions, et comment gérer et lever des exceptions.

Transféré par

FATIMA ZAHRA MACHKOUR
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)
65 vues8 pages

Exceptions

Le document décrit les exceptions en PL/SQL, y compris les exceptions prédéfinies, les exceptions utilisateurs, la portée des exceptions, et comment gérer et lever des exceptions.

Transféré par

FATIMA ZAHRA MACHKOUR
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
Vous êtes sur la page 1/ 8

08/12/2021

PL – SQL -LMD
EXCEPTION

EXCEPTIONS

Exceptions Exceptions Exceptions


Systèmes Utilisateurs Systèmes
Nommées Nommées Anonymes

Exceptions
Utilisateurs
Anonymes
(-20000 et -20999)

1
08/12/2021

EXCEPTIONS

Syntaxe
Declare
...
Begin

Exception
WHEN <nom_exception> [OR <nom_exception>…]
THEN <instruction_plsql>;

[WHEN OTHERS THEN <instructions_plsql>;]
End;

LES EXCEPTIONS PRÉDÉFINIES

Se trouve dans le package STANDARD de PL/SQL


Quelques exceptions prédéfinies :
• No_Data_Found (ORA-01403 SQLCODE =+100)
• CURSOR_ALREADY_OPEN (ORA-6511 SQLCODE =-6511)
• ZERO_DIVIDE (ORA-01476 SQLCODE = -1476)
• CASE_NOT_FOUND (ORA-6592 SQLCODE =-6592)

2
08/12/2021

EXCEPTION NO DATA FOUND

Dans la table bateau :


 Déclarer deux variables du même type que nobateau et
nomodele.
 Initialiser la variable nobateau par une valeur inexistante par
exemple 20.
 Faites un select qui ramène le bateau qui correspond à cette
valeur.
 Gérer l’exception no data found et afficher un message d’erreur .
 Continuer le traitement en affichant le nom du bateau no « 1 »

PORTÉE EXCEPTION

« Quitte le bloc dans le lequel il est déclenché et recherche une exception


dans les blocs supérieurs »

 Créer un bloc PLSQL


 Créer un autre bloc dans ce bloc :
 Déclarer deux variables du même type que nobateau et nomodele.
 Initialiser la variable nobateau par une valeur inexistante.
 Faites un select qui ramène le bateau qui correspond à cette valeur.
 Gérer l’exception no data found et afficher un message d’erreur .
 Ajouter une instruction dans le BLOC Supérieur qui afficher un message

3
08/12/2021

SQLCODE & SQLERRM

SQLCODE
Permet de retrouver le code des exceptions Oracle
SQLERRM
Permet de retrouver le message des exceptions
Oracle

EXCEPTION NO DATA FOUND

Dans la table bateau :


 Déclarer une variable du même type que nomodele.
 Faites un select qui ramène toute la colonne nomodele de la
table bateau est stocker le résultat dans cette variable.
 Gérer l’exception no data found et afficher un message d’erreur .
 Afficher le nom du message d’erreur et le code SQL.
 Récupérer le nom de l’exception et utiliser le .

4
08/12/2021

LISTE DE QLQ EXCEPTION DÉFINIES


ORA-00001 DUP_VAL_ON_INDEX Une valeur en double existe
ORA-01001 INVALID_CURSOR Le curseur n'est pas valide
ORA-010121 NOT_LOGGED_ON L'utilisateur n'est pas connecté
ORA-01017 LOGIN_DENIED Une erreur système s'est produite
ORA-01017 LOGIN_DENIED Une erreur système s'est produite
ORA-01017 LOGIN_DENIED Une erreur système s'est produite
ORA-01403 NO_DATA_FOUND La requête ne renvoie aucune donnée
Une requête sur une seule ligne renvoie
ORA-01422 TOO_MANY_ROWS
plusieurs lignes
Une tentative a été faite pour diviser un
ORA-01476 ZERO_DIVIDE
nombre par zéro
ORA-01722 INVALID_NUMBER Le numéro est invalide
Une incompatibilité s'est produite dans le
ORA-06504 ROWTYPE_MISMATCH
type de ligne
ORA-06511 CURSOR_ALREADY_OPEN Le curseur est déjà ouvert
ORA-06532 COLLECTION_IS_NULL Travailler avec la collection NULL
ORA-06531 SUBSCRIPT_OUTSIDE_LIMIT Index de collection hors de portée
>ORA-06533 SUBSCRIPT_BEYOND_COUNT Index de collection hors de compte

EXCEPTIONS ANONYMES

1. A partir d’un code saisi afficher le message


correspondant : Fonction SQLEERM(&sqlcode).
2. Lancer une boucle qui affiche l’ensemble des messages
d’erreur des code SQL entre -2000 et 0:

5
08/12/2021

PRAGMA EXCEPTION_INIT

 Fonction:
 Permet d’associer une exception utilisateur à un code d’erreur Oracle.
 Syntaxe:
 Declare
 <nom_exception> Exception;
 Pragma Excpetion_init (<nom_excpetion>,<code_erreur_oracle>);

 Begin
 Exception
 WHEN <nom_exception> THEN
<istruction_plsql>;

 End;

PRAGMA EXCEPTION_INIT

 Essayer de supprimer le bateau numéro : 1 (rattacher à plusieurs


voyages par la clé étrangère).
 Créer une exception : Suppression_FK liée au code erreur -2292.
 Levez l’exception nommée.
 Message « Vous ne pouvez pas supprimer une ligne référencé dans
une autre table- Violation de clé étrangère».

6
08/12/2021

EXCEPTION UTILISATEUR

 Declare
 <nom_exception> Exception;

 Begin
 RAISE <nom_exception>
 Exception
 WHEN <nom_exception> THEN
<istruction_plsql>;

 End;

EXCEPTION UTILISATEUR

 Définir une exception date_achat_invalide.


 Récupérer la date d’achat du bateau 2.
 Avec un « IF » remonter l’exception si la nouvelle date « 10/10/2010 » est
postérieure à la date d’achat du bateau 2.
 Mettez à jour la date d’achat du bateau avec la nouvelle .
 Intercepter l’exception date_achat_invalide.
 Ajouter un message d’affichage.
 Vérifier que la date ne sera pas changée.

7
08/12/2021

MERCI DE
VOTRE
ATTENTION

Vous aimerez peut-être aussi