第七章 MySQL基础:流程控制语句

7.2 流程控制语句

7.2.1 IF语句

delimiter //
create procedure example_if(in x int)
begin
if x=1 then
select 1;
elseif x=2 then
select 2;
else
select 3;
end if;
end
//

delimiter为定界符,将语句的结束标志设定为//,当执行到//时才会作为语句结束,这样整个储存过程就是一个完整的语句,定界符默认为,修改后为避免麻烦最好修改回

调用该储存过程,输入参数为2

call example_if(2)//

7.2.2 CASE语句

delimiter //
create procedure example_case(in x int)
begin
case x
when 1 then select 1;
when 2 then select 2;
else select 3;
end case;
end
//

调用该储存过程

call example_case(3)//

7.2.3 WHILE循环语句

计算前100自然数的和

delimiter //
create procedure example_while(out sum int)
begin
declare i int default 1;
declare s int default 0;
while i<=100 do
set s=s+i;
set i=i+1;
end while;
set sum=s;
end
//

while后为条件,do与end while之间为循环体

调用该储存过程

call example_while(@s)//
select @s//

@s为out型变量(非官方理解),储存了数据,用select语句可以查看其值。


7.2.4 LOOP循环语句

计算前100自然数的和

delimiter //
create procedure example_loop(out sum int)
begin
declare i int default 1;
declare s int default 0;
loop_label:loop
set s=s+i;
set i=i+1;
if i>100 then
leave loop_label;
end if;
end loop;
set sum=s;
end
//

LOOP中没有循环条件,因此其会不断执行,为了跳出循环,可设置一个标签label,通过leave label;语句来退出循环。

调用存储过程

call example_loop(@s)//
select @s//

7.2.5 REPEAT循环

计算前100自然数的和,和do while类似

delimiter //
create procedure example_repeat(out sum int)
begin
declare i int default 1;
declare s int default 0;
repeat
set s=s+i;
set i=i+1;
until i>100
end repeat;
set sum=s;
end 
//
call example_repeat(@s)//
select @s//

注:另外还有ITERATE label ,重新开始一个循环,存储过程没有for循环。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值