© Éditions Eyrolles
241
chapitre n° 7
Programmation avancée
Récursivité
La récursivité n’est pour l’instant pas permise dans MySQL au niveau des sous-programmes.
Comme dans tout programme récursif, il ne faudrait pas oublier la condition de terminaison !
L’exemple suivant décrit la programmation à l’aide d’une fonction récursive du calcul de la
factorielle d’un entier positif. La compilation se déroule sans erreur, l’appel, lui, nous ramène
à l’ordre.
Tableau 7-2 Appels dans un sous-programme
Codage
Appels
CREATE PROCEDURE test.sp1()
BEGIN
DECLARE v_compa VARCHAR(4)
DEFAULT 'AF';
DECLARE v_heures DECIMAL(7,2)
DEFAULT 300;
DECLARE v_nbpil SMALLINT;
SELECT v_nbpil;
END;
CALL test.sp1()$
+---------+
| v_nbpil |
+---------+
|
2 |
+---------+
SET @vs_compa = NULL$
SET @vs_nompil = ''$
SET @vs_heures = ''$
CREATE PROCEDURE test.sp2()
BEGIN
END;
CALL test.sp2()$
+---------------------------------+
| resultat
|
+---------------------------------+
| Plusieurs pilotes sont les plus
expérimentés
|
+---------------------------------+
-- Les variables de session sont
-- toutes à NULL
SET @vs_resultat = ''$
CREATE PROCEDURE test.sp3()
BEGIN
SET @vs_resultat :=
;
END;
CALL test.sp3()$
SELECT @vs_resultat AS 'Résultat'$
+-----------------+
| Résultat
|
+-----------------+
| Complexe : 7-2i |
+-----------------+
Web
SET v_nbpil := bdsoutou.EffectifsHeure
(v_compa,v_heures);
CALL bdsoutou.PlusExperimente
(@vs_compa,@vs_nompil,@vs_heures);
bdsoutou.EcritureComplexe(7,-2)
Précédent

- 263/418

Suivant