© Éditions Eyrolles
261
chapitre n° 7
Programmation avancée
Les traces de l’exécution de cette procédure sont les suivantes. Notez que si on appelle cette
procédure en passant en paramètre une compagnie inexistante, le sous-programme se termine
normalement sans passer dans la section d’erreur.
CALL bdsoutou.procExceptionNommee('AF')$
+-----------------------------------------------------+
| Resultat procExceptionNommee
|
+-----------------------------------------------------+
| Désolé, il reste encore un pilote à la compagnie AF |
+-----------------------------------------------------+
CALL bdsoutou.procExceptionNommee('EJET')$
+------------------------------+
| Resultat procExceptionNommee |
+------------------------------+
| Compagnie EJET détruite
|
+------------------------------+
Tableau 7-16 Programmation d’une exception nommée
Code MySQL
Commentaires
CREATE PROCEDURE bdsoutou.procExceptionNommee
(IN p_comp VARCHAR(4))
BEGIN
DECLARE flagerr BOOLEAN DEFAULT 0;
Déclaration de l’exception
nommée.
Corps du traitement (validation).
BEGIN
;
DECLARE EXIT HANDLER
FOR
SET flagerr :=1;
SET AUTOCOMMIT=0;
DELETE FROM Compagnie WHERE comp = p_comp;
SELECT CONCAT('Compagnie ',p_comp, ' détruite')
AS 'Resultat procExceptionNommee';
END;
IF flagerr THEN
ROLLBACK;
SELECT CONCAT('Désolé, il reste encore un pilote à
la compagnie ',p_comp)
AS 'Resultat procExceptionNommee';
ELSE
COMMIT;
END IF;
END;
Gestion de l’exception.
Web
DECLARE erreur_ilResteUnPilote CONDITION
FOR SQLSTATE '23000'
erreur_ilResteUnPilote
261
chapitre n° 7
Programmation avancée
Les traces de l’exécution de cette procédure sont les suivantes. Notez que si on appelle cette
procédure en passant en paramètre une compagnie inexistante, le sous-programme se termine
normalement sans passer dans la section d’erreur.
CALL bdsoutou.procExceptionNommee('AF')$
+-----------------------------------------------------+
| Resultat procExceptionNommee
|
+-----------------------------------------------------+
| Désolé, il reste encore un pilote à la compagnie AF |
+-----------------------------------------------------+
CALL bdsoutou.procExceptionNommee('EJET')$
+------------------------------+
| Resultat procExceptionNommee |
+------------------------------+
| Compagnie EJET détruite
|
+------------------------------+
Tableau 7-16 Programmation d’une exception nommée
Code MySQL
Commentaires
CREATE PROCEDURE bdsoutou.procExceptionNommee
(IN p_comp VARCHAR(4))
BEGIN
DECLARE flagerr BOOLEAN DEFAULT 0;
Déclaration de l’exception
nommée.
Corps du traitement (validation).
BEGIN
;
DECLARE EXIT HANDLER
FOR
SET flagerr :=1;
SET AUTOCOMMIT=0;
DELETE FROM Compagnie WHERE comp = p_comp;
SELECT CONCAT('Compagnie ',p_comp, ' détruite')
AS 'Resultat procExceptionNommee';
END;
IF flagerr THEN
ROLLBACK;
SELECT CONCAT('Désolé, il reste encore un pilote à
la compagnie ',p_comp)
AS 'Resultat procExceptionNommee';
ELSE
COMMIT;
END IF;
END;
Gestion de l’exception.
Web
DECLARE erreur_ilResteUnPilote CONDITION
FOR SQLSTATE '23000'
erreur_ilResteUnPilote
