© Éditions Eyrolles
253
chapitre n° 7
Programmation avancée
CALL bdsoutou.procException1('AF')$
+-----------------------------------------------+
| Resultat procException1
|
+-----------------------------------------------+
| Il y a plusieurs pilotes pour la compagnie AF |
+-----------------------------------------------+
Appel d’une procédure dans l’exception
Le tableau suivant décrit l’appel d’une procédure dans le cas de l’erreur NOT FOUND. La procédure principale exécute le sous–programme, puis sort du bloc principal et se termine correctement.
La trace d’une exécution correcte de cette procédure (qui se déroute vers le sous-programme
appelé du fait de NOT FOUND) est la suivante :
+-----------------------------------------------+
| Resultat procpasTrouve
|
+-----------------------------------------------+
| Il n'y a pas de pilote pour la compagnie RIEN |
+-----------------------------------------------+
Il est aisé de transposer ce raisonnement à plusieurs exceptions appelant différents sousprogrammes.
Tableau 7-10 Exception NOT FOUND traitée avec EXIT et CALL
Code MySQL
Commentaires
CREATE PROCEDURE bdsoutou.pasTrouve
(IN p_comp VARCHAR(4))
BEGIN
SELECT CONCAT('Il n''y a pas de pilote pour
la compagnie ',p_comp)
AS 'Resultat procpasTrouve';
END;
Codage du sous-programme
appelé lors de l’exception.
CREATE PROCEDURE bdsoutou.procException1
(IN p_comp VARCHAR(4))
BEGIN
DECLARE var1 VARCHAR(20);
Procédure qui déclare
l’exception.
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';
Requête pouvant déclencher
l’exception prévue.
Affichage du résultat.
END;
Fin de la procédure principale.
Web
DECLARE EXIT HANDLER FOR NOT FOUND
CALL bdsoutou.pasTrouve(p_comp);
Précédent

- 275/418

Suivant