IF
IF 语句用于构造基本的条件语句。
IF 语句的语法如下:
IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list] ...
[ELSE statement_list]
END IF
IF 语句可以包含 THEN、ELSE 和 ELSEIF 子句,并以 END IF 终止。
如果指定的 search_condition 的计算结果为 True,则执行相应的 THEN 或 ELSEIF 子句语句列表。如果没有匹配的 search_condition,则执行 ELSE 子句中的 statement_list。
每个 statement_list 由一个或多个 SQL 语句组成;不允许使用空的 statement_list。
存储程序中的 IF ... END IF 块,必须使用分号(;)终止。与其他流控制构造一样,IF ... END IF 块可以嵌套在其他控制语句中,包括 IF 语句。每个 IF 必须以它自己的 END IF; 终止。您可以通过缩进代码使嵌套的流控制块更容易阅读,如下例所示:
DELIMITER //
CREATE FUNCTION comp_fuc (n INT, m INT)
RETURNS VARCHAR(50)
BEGIN
DECLARE x VARCHAR(50);
IF n = m THEN SET x = '等于';
ELSE
IF n > m THEN SET x = '大于';
ELSE SET x = '小于';
END IF;
END IF;
SET x = CONCAT(n, ' ', x, ' ', m, '.');
RETURN x;
END //
Query OK, 0 rows affected
上述示例中,只有当 n 不等于 m 时,才会计算内部 IF 语句。