GBase 8a
其他
文章

存储过程的循环体

发表于2025-02-07 17:23:18182次浏览5个评论

 

1.while循环:
while 条件 do 循环操作;
set 变量累加;
end while;

例子:
while var<6 do  
insert into t values(var);  
set var=var+1;  
end while;


2.repeat循环:
repeat 循环操作;
set 变量累加;
until 条件     -- 结尾不加分号
end repeat;

例子:
repeat  
insert into why.why(a) values(var);  
set var=var+1;  
until var>5  
end repeat;


3.loop循环:
LOOP_LABLE:loop                   -- LOOP_LABLE为标签
循环操作; 
set 变量累加;  
if 条件 then leave LOOP_LABLE;   -- 达到条件跳出标签循环体
end if;  
end loop;      

例子:
LOOP_LABLE:loop  
insert into why.why(b) values(var);  
set var=var+1;  
if var >5 then 
leave LOOP_LABLE;  
end if;  
end loop;


4.LABLES标号可以用在begin、repeat、while、loop语句前,可以跳出循环,使运行指令达到复合语句的最后一步。

5.ITERATE迭代  --通过引用复合语句的标号,来从新开始复合语句:
例子:
DELIMITER //  
CREATE PROCEDURE proc10 ()  
begin 
declare v int;  
set v=0;  
LOOP_LABLE:loop  
if v=3 then   
set v=v+1;  
ITERATE LOOP_LABLE;  
end if;  
insert into t values(v);  
set v=v+1;  
if v>=5 then 
leave LOOP_LABLE;  
end if;  
end loop;  
end;  
//  
DELIMITER ;

评论

登录后才可以发表评论
用户头像
levvel发表于 9个月前
评论是对发帖人的一种尊重
用户头像
levvel发表于 8个月前
给你点个赞
崔哥发表于 8个月前
问春何苦匆匆,带风伴雨如驰骤。幽葩细萼,小园低槛,壅培未就。吹尽繁红,占春长久,不如垂柳。算春长不老,人愁春老,愁只是、人间有。春恨十常八九,忍轻孤、芳醪经口。那知自是,桃花结子,不因春瘦。世上功名,老来风味,春归时候。纵樽前痛饮,狂歌似旧,情难依旧。
用户头像
levvel发表于 6个月前
讲得很清楚!
用户头像
levvel发表于 6个月前
海纳百川有容乃大,壁立千仞无欲则刚