Partie II
Programmation procédurale
242
© Éditions Eyrolles
Sous-programmes imbriqués
Il n’est pas possible de créer un sous-programme (nested subprogram) dans un autre sousprogramme.
Cela n’est valable que pour les blocs d’instructions qui peuvent éventuellement en inclure
d’autres (voir chapitre 6).
Le tableau suivant décrit la déclaration invalide du sous-programme Mouchard dans la
procédure imbriquee. Ce sous-programme insérerait une ligne dans une table pour tracer
l’appel de la procédure en fonction de l’utilisateur et du moment de l’exécution.
Tableau 7-3 Récursivité
Code MYSQL
Commentaires
delimiter $
CREATE FUNCTION factorielle(n INT)
RETURNS INT
BEGIN
IF
THEN
RETURN (1);
ELSE
RETURN (n * factorielle(n - 1));
END IF;
END;
$;
Condition de terminaison.
Appel récursif.
SELECT
AS 'Factorielle de 10'$
ERROR 1424 (HY000): Recursive stored routines are not
allowed.
Appel de la fonction !
Web
n = 1
factorielle(10)
Tableau 7-4 Sous-programme imbriqué
Code MySQL
Commentaires
CREATE PROCEDURE bdsoutou.imbriquee
(INOUT p1 VARCHAR(2))
BEGIN
Déclaration du sous-programme.
CREATE PROCEDURE bdsoutou.Mouchard()
BEGIN
INSERT INTO test.Trace VALUES
(CONCAT(USER(),' a lancé imbriquee
le ',SYSDATE()));
END;
Déclaration du sous-programme imbriqué.
SET p1 := 'OK';
Début du sous-programme.
CALL bdsoutou.Mouchard();
END;
$
Appel du sous-programme imbriqué.
Web
Programmation procédurale
242
© Éditions Eyrolles
Sous-programmes imbriqués
Il n’est pas possible de créer un sous-programme (nested subprogram) dans un autre sousprogramme.
Cela n’est valable que pour les blocs d’instructions qui peuvent éventuellement en inclure
d’autres (voir chapitre 6).
Le tableau suivant décrit la déclaration invalide du sous-programme Mouchard dans la
procédure imbriquee. Ce sous-programme insérerait une ligne dans une table pour tracer
l’appel de la procédure en fonction de l’utilisateur et du moment de l’exécution.
Tableau 7-3 Récursivité
Code MYSQL
Commentaires
delimiter $
CREATE FUNCTION factorielle(n INT)
RETURNS INT
BEGIN
IF
THEN
RETURN (1);
ELSE
RETURN (n * factorielle(n - 1));
END IF;
END;
$;
Condition de terminaison.
Appel récursif.
SELECT
AS 'Factorielle de 10'$
ERROR 1424 (HY000): Recursive stored routines are not
allowed.
Appel de la fonction !
Web
n = 1
factorielle(10)
Tableau 7-4 Sous-programme imbriqué
Code MySQL
Commentaires
CREATE PROCEDURE bdsoutou.imbriquee
(INOUT p1 VARCHAR(2))
BEGIN
Déclaration du sous-programme.
CREATE PROCEDURE bdsoutou.Mouchard()
BEGIN
INSERT INTO test.Trace VALUES
(CONCAT(USER(),' a lancé imbriquee
le ',SYSDATE()));
END;
Déclaration du sous-programme imbriqué.
SET p1 := 'OK';
Début du sous-programme.
CALL bdsoutou.Mouchard();
END;
$
Appel du sous-programme imbriqué.
Web
