Gestion d'exception
Qu'est-ce qu'une exception ?
Un identifiant PL/SQL, de type erreur, déclenché pendant l'exécution du bloc.
Comment est-elle déclenchée ?
Implicitement, par une erreur Oracle (NO_DATAFOUND, INVALID_CURSOR, TOO_MANY_ROWS, etc.)
Explicitement, par le programme (défini par l'utilisateur) : commande "RAISE nom_exception"
Par le développeur : Raise_application_error( -20023 , 'message')
Comment la traiter ?
En interceptant les exceptions
En la propageant à l'environnement appelant
Rappel : BD "Gestion des intervenants" : Schéma relationnel
1
tIntervenant (#pknom:varchar, prenom:varchar, poste:integer)
2
tCours (#pkannee:2000..2100, #pknum:integer, titre:varchar, type:C|TD|TP, fkintervenant=>tIntervenant, debut:date)
Exemple : BD "Gestion des intervenants" : Gestion d'exception
1
CREATE OR REPLACE PROCEDURE pInsertIntervenant (pNom varchar2, pPrenom varchar2)
2
IS
3
BEGIN
4
INSERT INTO tIntervenant (pknom, prenom)
5
VALUES (pNom, pPrenom);
6
EXCEPTION
7
WHEN DUP_VAL_ON_INDEX then
8
DBMS_OUTPUT.PUT_LINE('Intervenant déjà existant : ' || pNom);
9
WHEN OTHERS THEN
10
RAISE;
11
END;
12
/
13
14
SET SERVEROUTPUT ON
15
16
BEGIN
17
DBMS_OUTPUT.PUT_LINE('*** Programme indépendant ***');
18
pInsertIntervenant('JOUGLET', 'Antoine');
19
pInsertIntervenant('VINCENT', 'Antoine');
20
pAfficheIntervenants;
21
END;
22
/
1
*** Programme indépendant ***
2
Intervenant déjà existant : JOUGLET
3
** Liste des intervenants 1 **
4
-Stéphane Crozat
5
-Antoine Jouglet
6
-Antoine Vincent