跳到主要内容

IF

IF 语句用于构造基本的条件语句。

IF 语句的语法如下:

IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list] ...
[ELSE statement_list]
END IF

IF 语句可以包含 THENELSEELSEIF 子句,并以 END IF 终止。

如果指定的 search_condition 的计算结果为 True,则执行相应的 THENELSEIF 子句语句列表。如果没有匹配的 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 语句。