暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的SQL语句 -复合语句(6) - 流控制语句 - IF 语句

林员外聊编程 2020-12-19
219
IF 语句
 
IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list] ...
[ELSE statement_list]
END IF
 
存储程序的 IF 语句实现了一个基本的条件结构。
 
注意
 
还有一个 IF() 函数,它与这里描述的 IF 语句不同。IF 语句可以有 THENELSE ELSEIF 子句,并以 END IF 结束。
 
如果给定的 search_condition 计算结果为 true,则执行相应的 THEN ELSEIF 子句 statement_list。如果没有匹配的 search_condition,则执行 ELSE 子句 statement_list
 
每个 statement_list 由一个或多个 SQL 语句组成;不允许 statement_list 为空。
 
IF ... END IF 块与存储程序中使用的所有其他流控制块一样,必须用分号终止,如本例所示:
 
DELIMITER //


CREATE FUNCTION SimpleCompare(n INT, m INT)
RETURNS VARCHAR(20)


BEGIN
DECLARE s VARCHAR(20);


IF n > m THEN SET s = '>';
ELSEIF n = m THEN SET s = '=';
ELSE SET s = '<';
END IF;


SET s = CONCAT(n, ' ', s, ' ', m);


RETURN s;
END //


DELIMITER ;
 
与其他流控制结构一样,IF ... END IF 块可以嵌套在其他流程控制结构中,包括其他 IF 语句。每个 IF 必须以它自己的 END IF 后跟分号终止。可以使用缩进格式使嵌套的流程控制块更容易阅读(尽管 MySQL 不需要这样做),如下所示:
 
DELIMITER //


CREATE FUNCTION VerboseCompare (n INT, m INT)
RETURNS VARCHAR(50)


BEGIN
DECLARE s VARCHAR(50);


IF n = m THEN SET s = 'equals';
ELSE
IF n > m THEN SET s = 'greater';
ELSE SET s = 'less';
END IF;


SET s = CONCAT('is ', s, ' than');
END IF;


SET s = CONCAT(n, ' ', s, ' ', m, '.');


RETURN s;
END //


DELIMITER ;
 
在本例中,只有当 n 不等于 m 时才评估内部 IF 语句。
 
 
 
 
 
官方网址:
https://dev.mysql.com/doc/refman/8.0/en/if.html
 

文章转载自林员外聊编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论