mysql数据库存储过程及loop循环
本文介绍loop循环存储过程。
·
loop实现简单的循环,如果不在SQL逻辑中增加退出循环的条件,可以用其来实现简单的死循环。
一、语法。
1、leave:配合循环使用,退出循环。
2、iterate:必须用在循环中,作用是跳过当前循环剩下的语句,直接进入下一次循环。
[begin_label:] loop
sql逻辑
end loop [end_label];
leave label;#退出指定标记的循环体
iterate label;#直接进入下一次循环
二、案例。
1、计算从1累加到n的值,n为传入的参数值。
A.先定义局部变量,记录累加之后的值。
B.每循环一次,就会对n进行减1,如果n减到0,则退出循环leave xx。
create procedure p9(in n int)
begin
declare total int default 0;
sum:loop
if n <= 0 then
leave sum;
end if;
set total := total + n;
set n := n - 1;
end loop sum;
select total;
end;
#调用
call p9(10);
2、计算从1到n之间的偶数累加的值,n为传入的参数值。
A.先定义局部变量,记录累加之后的值。
B.每循环一次,就会对n进行减1,如果n减到0,则退出循环leave xx。
C.如果档次累加的数据是奇数,则直接进入下一次循环。
create procedure p10(in n int)
begin
declare total int default 0;
sum:loop
if n <= 0 then
leave sum;
end if;
if n%2 = 1 then
set n := n - 1;
iterate sum;
end if;
set total := total + n;
set n := n - 1;
end loop sum;
select total;
end;
#调用
call p10(10); call p10(100);

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)