>首页> IT >

短讯!MySQL流程控制之while、repeat、loop循环

时间:2022-07-27 18:04:03       来源:转载
本篇文章给大家带来了关于mysql的相关知识,主要介绍了MySQL存储过程之流程控制while、repeat、loop循环,循环中的代码会运行特定的次数,或者是运行到特定条件成立时结束循环,下面一起来看一下,希望对大家有帮助。

推荐学习:mysql视频教程

前言

循环是一段在程序中只出现一次,但可能会连续运行多次的代码。循环中的代码会运行特定的次数,或者是运行到特定条件成立时结束循环。

循环分类:


(相关资料图)

whilerepeatloop

循环控制:

leave类似于 break,跳出,结束当前所在的循环

iterate类似于continue,继续,结束本次循环,继续下一次

while循环

【标签:】while 循环条件 do循环体;end while【 标签】;
-- 创建测试表create table user (uid int primary_key,username varchar ( 50 ),password varchar ( 50 ));
-- -------存储过程-whiledelimiter $$create procedure proc16_while1(in insertcount int)begindeclare i int default 1;label:while i<=insertcount doinsert into user(uid,username,`password`) values(i,concat("user-",i),"123456");set i=i+1;end while label;end $$delimiter ;call proc16_while(10);

存储过程语法是固定的:delimiter $$ create peocedure 循环名(参数)begin 代码 end $$ delimiter;

注意在写循环体的时候,必须要要有定义循环的初识变量,采用declare i int default 默认值

然后就是dlabel:while 判断条件 do循环体 end while label;end && 必须要有

-- -------存储过程-while + leavetruncate table user;delimiter $$create procedure proc16_while2(in insertcount int)begindeclare i int default 1;label:while i<=insertcount doinsert 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);

如果在内部需要跳出循环的话,采用if 判断 ,但是最后需要end if 结尾

这里的leave就是 跳出循环,相对于break

-- -------存储过程-while+iteratetruncate table user;delimiter $$create procedure proc16_while3(in insertcount int)begindeclare i int default 1;label:while i<=insertcount doset 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);

这里的iterate 相对于continue 遇到就不执行下面的代码

repeat循环

repeat循环体;until 条件表达式end repeat [标签];
-- -------存储过程-循环控制-repeatuse mysql7_procedure;truncate table user;delimiter $$create procedure proc18_repeat(in insertCount int)begindeclare i int default 1;label:repeatinsert into user(uid, username, password) values(i,concat("user-",i),"123456");set i = i + 1;until i > insertCountend repeat label;select "循环结束";end $$delimiter ;call proc18_repeat(100);

这个相对于是,无论如何都会执行一次的循环,然后是在内部进行判断,如果满足了就直接跳出

loop循环

 loop循环体;if 条件表达式 thenleave [标签];end if;end loop;
-- -------存储过程-循环控制-looptruncate table user;delimiter $$create procedure proc19_loop(in insertCount int)begindeclare i int default 1;label:loopinsert into user(uid, username, password) values(i,concat("user-",i),"123456");set i = i + 1;if i > 5thenleave label;end if;end loop label;select "循环结束";end $$delimiter ;call proc19_loop(10);

这个和repeat不同的是,需要执行之后,利用leave 跳出循环,无论是使用哪种都可以达到我们需要的效果,但是在业务中的应用场景,while还是相对比较的多。

推荐学习:mysql视频教程

以上就是MySQL流程控制之while、repeat、loop循环的详细内容,更多请关注php中文网其它相关文章!

关键词: 存储过程 跳出循环 流程控制