流程控制的使用
- 流程控制语句 用于根据条件 控制语句的执行。
- MySQL用于构造控制流程的语句有:if、case、loop、while、leave、iterate、repeat。
if语句
- if条件判断,包含多个条件判断。
- 语法格式如下:
# if...else
if 条件
then 语句1;
else 语句2;
end if;
# if...elseif...else
if 条件1
then 语句1;
elseif 条件2;
then 语句2;
(else 语句3;)
(else 语句4;)
end if;case语句
- case也是进行条件判断的语句
- 第一种语法格式如下:
case 条件判断表达式
when 条件表达式可能的值1 then 语句1;
when 条件表达式可能的值2 then 语句2;
......
else 语句n;
end case;- 示例:
case value
when 1 then select 'value is 1';
[when 2 then select 'value is 2';]
[else select 'value is not 1 or 2';]
end case;- 第二种语法格式如下:
case
when 条件判断语句1 then 语句1;
[when 条件判断语句1 then 语句1;]
[else 语句3;]
end case;- 示例:
case
when value is null then select 'value is null';
when value > 0 then select 'value is gteater than 0';
when value < 0 then select 'value is less than 0';
else select 'value is 0';
end case;loop循环语句
- loop循环语句用来重复执行某些语句。
- loop只是创建循环操作过程,并不进行条件判断。
- **loop内的语句一直重复执行直到循环被退出,跳出循环过程。
- 跳出循环用leave
- 基本语法格式如下:
[loop语句的标注名称:] loop
循环语句;
end loop [loop语句的标注]- 示例:使用loop进行循环操作,id小于等于10之前,将重复执行循环过程。
delect id in defult 0;
add_loop: loop
set id = id + 1;
if id >= 10 then leave add_loop;
end if;
end loop add_loop;leave语句
- leave语句用来跳出任何被标注的流程控制构造
- 基本语法格式如下:
leava 循环标志;- 上述loop语句中的示例中含有leave语句的用法。
iterate
- iterate将执行顺序转到语句的开头。
- 类似于C语言循环中的continue
- **iterate语句可以用在loop、while、repeat语句内。
- 基本语法格式如下:
iterate 循环标志;repeat语句
- repeat语句创建一个带判断条件的循环过程,每次语句执行结束后都会对条件表达式进行判断
- 若为真,循环结束,否则继续循环操作。(与C语言中的do…while条件判断相反)
- 先执行在判断(类似于C语言中的do…while)
- 基本语法格式:
[repeat 语句的标注名称:] repeat
循环语句;
until 循环条件表达式;
end repeat [repeat 语句的标注名称];while语句
- while语句创建一个带条件判断的循环
- 与repeat的不用是:while语句在执行之前先对指定的条件表达式进行判断。
- 若为真,继续执行循环,否则退出循环。
- 基本语法格式如下:
[while 语句的标注名称:] while 循环条件表达式
循环语句;
end while [while 语句的标注名称];
















