MySQL循环分类while、repeat、loop介绍
发布时间:2023-12-23 17:19:23 所属栏目:MySql教程 来源:DaWei
导读: 循环是一段在程序中只出现一次,但可能会连续运行多次的代码。
循环中的代码会运行特定的次数,或者是运行到特定条件成立时结束循环。
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 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); 存储过程语法是固定的: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(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); 如果在内部需要跳出循环的话,采用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: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); 这里的iterate 相对于continue 遇到就不执行下面的代码 repeat循环 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); 这个相对于是,无论如何都会执行一次的循环,然后是在内部进行判断,如果满足了就直接跳出 loop循环 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); 这个和repeat不同的是,需要执行之后,利用leave 跳出循环,无论是使用哪种都可以达到我们需要的效果,但是在业务中的应用场景,while还是相对比较的多。 以上就是“MySQL流程控制之while、repeat、loop循环实例分析”这篇文章的所有内容,感谢各位的阅读! (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐