上两篇主要说了如何创建存储过程和存储函数,本篇主要说流程控制。
控制语句主要有,if,case,loop,leave,iterate,repeat以及while语句。
1.if语句。
if语句包含多个判断条件,根据判断条件的结果进行语句的执行。
其语法为 if 条件 then 执行语句 elseif 条件 then 执行语句 ...end if;
# 例如:如果val为null则输出1否则0;
if val is null
then select 1;
else select 0;
end if;
2.case语句。
case语句也判断语句。
其语法格式为:case 参数 when 值 then 语句 end case;
# 当val为1时输出1,为2时输出2否则输出0。
# 第一种写法
case val
when 1 then select 1;
when 2 then select 2;
else then select 0;
end case;
# 第二种写法
case
when val=1 then select 1;
when val=2 then select 2;
else select 0;
end case;
3.loop语句。
loop是循环语句,其语法格式为:loop 循环体 end loop;
# 首先定义ID参数给出默认值0,进行循环判断,小于10继续执行循环体。
DECLARE id int default 0;
add_loop:loop
set id = id + 1;
if id >=10 then leave add_loop;
end if;
end loop add_loop;
4.leave语句。
leave语句是用来退出任何被标注的流程控制构造。
其语法为:leave 参数;
DECLARE id int default 10;
d_loop:loop
set id = id - 1;
if id = 0 then leave d_loop;
end if;
end loop d_loop;
5.iterate语句。
iterate语句执行顺序转到开头,语法格式为:iterate 参数。
create procedure item()
begin
declare p1 int default 0;
d_loop:loop
set p1 = p1 + 1;
if p1 < 10 then iterate d_loop;
elseif p1 > 20 then leave d_loop;
end if;
end loop d_loop;
end
6.repeat语句。
repeat语句是一个带条件的循环过程,每次执行语句执行完毕后对条件进行判断,如果为真则结束,否则终止。
declare id int default 0;
repeat
set id = id + 1;
until id >= 10
end repeat;
7.while语句。
while语句也是一个带判断条件的循环过程,不过与repeat不同的是,while在执行语句时,先对表达式进行判断,如果为真,就执行,否则退出。
declare i int default 0;
while i < 10 DO
set i = i + 1;
end while;