© Éditions Eyrolles
259
chapitre n° 7
Programmation avancée
L’exécution suivante de cette procédure déclenche les deux exceptions (ce qui n’était pas le
cas dans la procédure précédente).
CALL bdsoutou.procException3('PL-0', 500)$
+-----------------------------------------------+
| CONCAT('Pas de pilote de brevet : ',p_brevet) |
+-----------------------------------------------+
| Pas de pilote de brevet : PL-0
|
+-----------------------------------------------+
+-----------------------------------------------------------------+
| CONCAT('Pas de pilote ayant ce nombre d''heures de vol : ',p_heures) |
+-----------------------------------------------------------------+
| Pas de pilote ayant ce nombre d'heures de vol : 500
|
+-----------------------------------------------------------------+
Il resterait à programmer l’exception ERROR 1172 (Result consisted of more
than one row) pour gérer, au niveau de la seconde requête, l’extraction de plusieurs pilotes
Tableau 7-15 Exceptions NOT FOUND toutes traitées
Code MySQL
Commentaires
CREATE PROCEDURE bdsoutou.procException3
(IN p_brevet VARCHAR(6),IN p_heures DECIMAL(7,2))
BEGIN
DECLARE v_nom
VARCHAR(20);
DECLARE flagNOTFOUND BOOLEAN DEFAULT 0;
;
SELECT nom INTO v_nom FROM bdsoutou.Pilote
WHERE brevet = p_brevet;
IF flagNOTFOUND THEN
SELECT CONCAT('Pas de pilote de brevet : ',p_brevet);
SET flagNOTFOUND := 0;
ELSE
SELECT CONCAT('Le pilote de code ',p_brevet,
' est ',v_nom);
END IF;
Gestion de l’exception de
la première requête.
SELECT nm INTO v_nom FROM bdsoutou.Pilote
WHERE nbHVol = p_heures;
IF flagNOTFOUND THEN
SELECT CONCAT('Pas de pilote ayant ce nombre d'
'heures de vol : ',p_heures);
ELSE
SELECT CONCAT('Le pilote ayant ',p_heures,
' heures de vol est ',v_nom);
END IF;
END;
Gestion de l’exception de
la deuxième requête.
Web
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET flagNOTFOUND := 1
Précédent

- 281/418

Suivant