mysql中,存储过程中使用循环结构(while,repeat,loop)-(2)

1、相关知识的:

    1.while语句
       while   条件  do
              程序块
        end  while
       特征:先判断条件,再执行程序,条件不成立时,退出循环

    2.repeat语句
        repeat  
               程序块
        until   条件
        end  repeat
        特征:先执行程序,再判断条件,条件成立时,退出循环
                  因此,程序块至少会被执行一次
    
    3.loop语句
        [语句标号:]loop
               程序块
        end loop [结束标号]
        特征:一直执行循环,遇到leave  标号语句时,退出循环

    4.退出循环
        leave      语句标号

2、代码1如下--while写法

-- 求1到100的和 
drop  procedure  if exists  do_while;
delimiter $$
create  procedure  do_while(out sum_v2 int)
begin
    -- 过程体 
    declare  i  int  default 1;
    declare  a int  default 0;
    while  i<=100 do
        set a = a+i;
        set i = i+1;
    end while;
    set sum_v2 = a;
end$$
delimiter ;

call do_while(@R);    -- 调用过程
select @R;
 

     代码2如下--repeat写法

-- 求1到100的和 
drop  procedure  if exists  do_repeat;
delimiter $$
create  procedure  do_repeat(out sum_v2 int)
begin
    -- 过程体 
    declare  i  int  default 1;   -- 初始值为1
    declare  a int  default 0;  -- 存放求和结果      
    repeat
        set a = a+i;
        set i = i+1;
    until i>=101
    end repeat ;
    set sum_v2 = a;
end$$
delimiter ;

call do_repeat(@R);    -- 调用过程
select @R;
 

     代码3如下--loop写法

-- 求1到100的和 
drop  procedure  if exists  do_loop;
delimiter $$
create  procedure  do_loop(out sum_v2 int)
begin
    -- 过程体 
    declare  i  int  default 1;   -- 初始值为1
    declare  a int  default 0;  -- 存放求和结果      
    label:loop     -- 标记为label
        set a = a+i;
        set i = i+1;
        if i>=101 then
            leave label;     -- 退出loop
        end if;
    end loop label;
    set sum_v2 = a;
end$$
delimiter ;

call do_repeat(@R);    -- 调用过程
select @R;
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值