MySQL - IF、WHILE和LOOP等流程控制语句
概述
这些语句都不可单独使用,主要用于 存储过程 PROCEDURE 和 函数 FUNCTION 中。
IF语句
说明:
IF 语句用来进行条件判断,根据是否满足条件(可包含多个条件),来执行不同的语句。
基本形式:
IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list]...
[ELSE statement_list]
END IF
- search_condition 参数表示条件判断语句,
如果返回值为 TRUE ,相应的 SQL 语句列表(statement_list)被执行;
如果返回值为 FALSE,则 ELSE 子句的语句列表被执行。statement_list 可以包括一个或多个语句。 - 使用 END IF 来结束IF语句。
注意:MySQL 中的 IF( ) 函数不同于这里的 IF 语句。
CASE语句
CASE 语句也是用来进行条件判断的,它提供了多个条件进行选择,可以实现比 IF 语句更复杂的条件判断。CASE 语句的基本形式如下:
基本形式1:
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list]...
[ELSE statement_list]
END CASE
- case_value 参数表示条件判断的变量,决定了哪一个 WHEN 子句会被执行;
- when_value 参数表示变量的取值,如果某个 when_value 表达式与 case_value 变量的值相同,则执行对应的 THEN 关键字后的 statement_list 中的语句;
- statement_list 参数表示 when_value 值没有与 case_value 相同值时的执行语句。
- CASE 语句都要使用 END CASE 结束。
基本形式2:
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
- search_condition 参数表示条件判断语句;
- statement_list 参数表示不同条件的执行语句。
与上述语句不同的是,该语句中的 WHEN 语句将被逐个执行,直到某个 search_condition 表达式为真,则执行对应 THEN 关键字后面的 statement_list 语句。如果没有条件匹配,ELSE 子句里的语句被执行。
WHILE 语句
说明:
WHILE 语句是有条件控制的循环语句。
WHILE 语句是当满足条件时,执行循环内的语句,否则退出循环。
基本形式:
[begin_label:] WHILE search_condition DO
statement list
END WHILE [end label]
- search_condition 参数表示循环执行的条件,满足该条件时循环执行;
- statement_list 参数表示循环的执行语句。WHILE 循环需要使用 END WHILE 来结束。
LOOP 语句
LOOP 语句可以使某些特定的语句重复执行。与 IF 和 CASE 语句相比,LOOP 只实现了一个简单的循环,并不进行条件判断。
LOOP 语句本身没有停止循环的语句,必须使用 LEAVE 语句等才能停止循环,跳出循环过程。
基本形式:
[begin_label:]LOOP
statement_list
END LOOP [end_label]
- begin_label 参数和 end_label 参数分别表示循环开始和结束的标志,这两个标志必须相同,而且都可以省略;
- statement_list 参数表示需要循环执行的语句。