J'ai une simple boucle while imbriquée dans la procédure stockée, mais cela donne une erreur. La boucle n'a rien de génial, juste pour l'apprentissage, j'ai créé deux boucles.Boucle imbriquée dans la procédure stockée mysql
delimiter $$
create procedure getSum(in input int , out output int)
begin
set output = 0;
while input >= 1 do
declare tmp int default 1;
while tmp <= 5 do
set output = output + input ;
set tmp = tmp + 1;
end while ;
set input = input - 1 ;
end while;
end $$
delimiter ;
est Ci-dessous l'erreur
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'declare tmp int default 1; while tmp <= 5 do set output = output + inpu' at line 7
Merci.
ce qui était erroné avec mon code? Dois-je déclarer des variables locales à chaque fois comme ça? –
J'ai déplacé 'declare' au début du bloc, et ajouté' set tmp = 1; 'pour être cohérent avec la valeur avec laquelle vous l'aviez initialisé. – Ryan
Les variables locales sont définies par rapport à un bloc 'BEGIN ... END'. Habituellement, les définir au début du bloc élimine les erreurs comme celle-ci. Je pense que c'est une obligation de les définir en premier dans le bloc, comme dans les anciennes langues procédurales ... mais je peux me tromper. – Ryan