Cet article vous apporte des connaissances pertinentes sur mysql Il présente principalement le contrôle de processus des procédures stockées MySQL pendant, les répétitions et les boucles. Le code dans la boucle s'exécutera un nombre spécifique de fois ou jusqu'à ce qu'une condition spécifique soit remplie. Le cycle se termine à ce moment-là. J'espère que cela sera utile à tout le monde.
Apprentissage recommandé : Tutoriel vidéo mysql
Classification de boucle :
Contrôle de boucle :
leave est similaire à break, saute, mettre fin à la boucle actuelle La boucle
iterate est similaire à continue, continue, termine cette boucle et continue à la suivante
【标签:】while 循环条件 do 循环体; end while【 标签】;
-- 创建测试表 create table user ( uid int primary_key, username varchar ( 50 ), password varchar ( 50 ) );
-- -------存储过程-while delimiter $$ create procedure proc16_while1(in insertcount int) begin declare i int default 1; label:while i<=insertcount do insert into user(uid,username,`password`) values(i,concat('user-',i),'123456'); set i=i+1; end while label; end $$ delimiter ; call proc16_while(10);
La syntaxe de la procédure stockée est corrigée : delimiter $$ create peocedure loop nom (paramètre) début code fin $$ délimiteur ;
Notez que lors de l'écriture du corps de la boucle, vous devez avoir la première variable pour définir la boucle, utilisez declare i int default default value
Puis dlabel :while jugement condition do loop Body end while label; end && must have
-- -------存储过程-while + leave truncate table user; delimiter $$ create procedure proc16_while2(in insertcount int) begin declare i int default 1; label:while i<=insertcount do insert into user(uid,username,`password`) values(i,concat('user-',i),'123456'); if i=5 then leave label; end if; set i=i+1; end while label; end $$ delimiter ; call proc16_while2(10);
Si vous avez besoin de sortir de la boucle en interne, utilisez if jugement, mais vous avez besoin de end if à la fin
quitter ici pour sortir du boucle, comparé à break
-- -------存储过程-while+iterate truncate table user; delimiter $$ create procedure proc16_while3(in insertcount int) begin declare i int default 1; label:while i<=insertcount do set i=i+1; if i=5 then iterate label; end if; insert into user(uid,username,`password`) values(i,concat('user-',i),'123456'); end while label; end $$ delimiter ; call proc16_while3(10);
ici Par rapport à continuer, iterate n'exécute pas le code suivant lorsqu'il rencontre
[标签:]repeat 循环体; until 条件表达式 end repeat [标签];
-- -------存储过程-循环控制-repeat use mysql7_procedure; truncate table user; delimiter $$ create procedure proc18_repeat(in insertCount int) begin declare i int default 1; label:repeat insert into user(uid, username, password) values(i,concat('user-',i),'123456'); set i = i + 1; until i > insertCount end repeat label; select '循环结束'; end $$ delimiter ; call proc18_repeat(100);
Ceci est comparé à une boucle qui sera exécutée une fois quoi qu'il arrive, puis elle est jugée en interne, s'il est satisfait, il sortira directement
[标签:] loop 循环体; if 条件表达式 then leave [标签]; end if; end loop;
-- -------存储过程-循环控制-loop truncate table user; delimiter $$ create procedure proc19_loop(in insertCount int) begin declare i int default 1; label:loop insert into user(uid, username, password) values(i,concat('user-',i),'123456'); set i = i + 1; if i > 5 then leave label; end if; end loop label; select '循环结束'; end $$ delimiter ; call proc19_loop(10);
La différence entre ceci et la répétition est qu'après l'exécution, utilisez Leave pour sortir de la boucle. Peu importe celui utilisé, nous pouvons obtenir l'effet. nous en avons besoin, mais dans les scénarios d'applications métier, cela reste relativement courant.
Apprentissage recommandé : Tutoriel vidéo mysql
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!