MySQL流程控制之while、repeat、loop循环实例分析

网友投稿 371 2023-11-23

MySQL流程控制之while、repeat、loop循环实例分析

今天小编给大家分享一下MySQL流程控制之while、repeat、loop循环实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

前言

MySQL流程控制之while、repeat、loop循环实例分析

循环是一段在程序中只出现一次,但可能会连续运行多次的代码。

循环中的代码会运行特定的次数,或者是运行到特定条件成立时结束循环。

循环分类:

while

repeat

loop

循环控制:

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

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

while循环

【标签:】while 循环条件 do 循环体; end while【 标签】;-- 创建测试表 create table user ( uid intprimary_key, usernamevarchar ( 50 ), password varchar ( 50 ) );-- -------存储过程-while delimiter $$ create procedureproc16_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);

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

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

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

-- -------存储过程-while+ leave truncate table user; delimiter $$ create procedure proc16_while2(ininsertcount 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);

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

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

-- -------存储过程-while+iterate truncate table user; delimiter $$ create procedure proc16_while3(in insertcount int) begin declare i int default 1; label:whilei<=insertcountdo 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);

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

repeat循环

repeat 循环体; until 条件表达式 end repeat [标签];-- -------存储过程-循环控制-repeatuse mysql7_procedure; truncatetable user; delimiter $$ create procedure proc18_repeat(ininsertCount int) begin declare i int default1; label:repeat insertinto 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);

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

loop循环

 loop 循环体; if 条件表达式 then leave [标签]; end if; end loop;-- -------存储过程-循环控制-loop truncate table user; delimiter $$ create procedure proc19_loop(ininsertCount int) begin declare i int default1; label:loop insertinto 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);

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

以上就是“MySQL流程控制之while、repeat、loop循环实例分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Redis之sentinel哨兵集群怎么部署
下一篇:SQL Server备份数据库的方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~