Partie II
Programmation procédurale
222
© Éditions Eyrolles
Il est à noter que LEAVE peut être aussi utilisé pour sortir d’un bloc (s’il est étiqueté). LEAVE
et ITERATE peuvent aussi être employés au sein de structures REPEAT ou WHILE.
Redirection (GOTO)
Célèbre pour faire tendre un programme vers une configuration plutôt de feu d’artifice que de
cours d’eau tranquille, l’instruction GOTO est bien connue, mais souvent mal utilisée. Elle peut
être pratique dans certains cas, pour sortir d’une boucle ou d’un bloc. Il n’est pas souhaitable
que vous utilisiez GOTO, à moins que vous écriviez vos algorithmes avec des organigrammes.
Dans son livre blanc (http://dev.mysql.com/tech-resources/articles/mysql-storedprocedures.html) Peter Gulutzan parle de « GOTO etiquette; » et de « LABEL etiquette; ». Cet
article est sorti alors que la version bêta de MySQL 5.0 n’en était qu’à ses débuts. Cette fonctionnalité semble avoir été supprimée dans la version de production. À suivre, donc.
Structure pour
Renommée pour les parcours de vecteurs, tableaux et matrices en tout genre, la structure pour
se caractérise par la connaissance a priori du nombre d’itérations que le programmeur souhaite
faire effectuer à son algorithme. La syntaxe générale de cette structure est programmée dans
tous les langages par l’instruction for.
Absente pour l’instant de MySQL, elle peut se programmer par un répéter, un tant que ou
encore par une boucle sans fin. Dans tous ces cas, il faudra définir un indice allant d’une valeur
initiale à une valeur finale, tout en incrémentant ce même indice en fin de boucle.
Interactions avec la base
Cette section décrit les mécanismes que MySQL offre pour interfacer un sous-programme
avec une base de données.
Tableau 6-17 TStructures boucle sans fin
Avec LEAVE
Avec ITERATE
SET v_somme := v_somme + v_entier;
SET v_entier := v_entier + 1;
IF v_entier > 100 THEN
;
END IF;
;
SET v_somme := v_somme + v_entier;
SET v_entier := v_entier + 1;
IF v_entier <= 100 THEN
;
END IF;
;
;
Web
boucle1: LOOP
LEAVE boucle1
END LOOP boucle1
boucle1: LOOP
ITERATE boucle1
LEAVE boucle1
END LOOP boucle1
Précédent

- 244/418

Suivant