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);

Logo

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

更多推荐