1. 首页
  2. 技术知识

MySQL存储过程之流程控制while,repeat,loop循环

目录

    前言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循环的文章就介绍到这了,更多相关MySQL存储过程 内容请搜索共生网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持共生网络!

原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/115350.html

联系我们