© Éditions Eyrolles
251
chapitre n° 7
Programmation avancée
La trace d’une exécution correcte de cette procédure (si la requête retourne une seule ligne, la
procédure ne passe pas dans le si) est la suivante :
CALL bdsoutou.procException1('CAST')$
+--------------------------------------------------------+
| Resultat procException1
|
+--------------------------------------------------------+
| Le seul pilote de la compagnie CAST est Sonia Dietrich |
+--------------------------------------------------------+
Une autre exécution correcte de cette procédure (qui se déroute hors du bloc du fait de NOT
FOUND) est la suivante :
CALL bdsoutou.procException1('RIEN')$
+-----------------------------------------------+
| Resultat procException1
|
+-----------------------------------------------+
| Il n'y a pas de pilote pour la compagnie RIEN |
+-----------------------------------------------+
Tableau 7-8 Exception NOT FOUND traitée avec EXIT
Code MySQL
Commentaires
CREATE PROCEDURE bdsoutou.procException1
(IN p_comp VARCHAR(4))
BEGIN
DECLARE flagNOTFOUND BOOLEAN DEFAULT 0;
DECLARE var1 VARCHAR(20);
IF flagNOTFOUND THEN
SELECT CONCAT('Il n''y a pas de pilote pour la
compagnie ',p_comp)
AS 'Resultat procException1';
END IF;
END;
Déclaration de la procédure et
des variables.
Bloc qui déclare l’exception.
Requête pouvant déclencher
l’exception prévue.
Affichage du résultat.
Fin du bloc.
Gestion de l’erreur.
Fin de la procédure.
Web
BEGIN
;
SELECT nom INTO var1 FROM bdsoutou.Pilote
WHERE comp=p_comp;
SELECT CONCAT('Le seul pilote de la compagnie ',
p_comp,' est ',var1)
AS 'Resultat procException1';
END;
DECLARE EXIT HANDLER FOR NOT FOUND
SET flagNOTFOUND :=1
Précédent

- 273/418

Suivant