IF
语句允许您根据表达式的某个条件或值结果来执行一组SQL语句。 要在MySQL中形成一个表达式,可以结合文字,变量,运算符,甚至函数来组合。表达式可以返回TRUE
,FALSE
或NULL
,这三个值之一。MySQL IF语句语法:
IF expression THEN statements; END IF;
expression
)计算结果为TRUE
,那么将执行statements
语句,否则控制流将传递到END IF
之后的下一个语句。MySQL IF ELSE语句:
IF expression THEN statement; ELSE else-statements; END IF;
MySQL IF ELSEIF ELSE语句:
IF expression THEN statements; ELSEIF elseif-expression THEN elseif-statements; ... ELSE else-statements; END IF;
expression
)求值为TRUE
,则IF
分支中的语句(statements
)将执行;如果表达式求值为FALSE
,则如果elseif_expression
的计算结果为TRUE
,MySQL将执行elseif-expression
,否则执行ELSE
分支中的else-statements
语句。以下示例说明如何使用IF ESLEIF ELSE
语句,GetCustomerLevel()
存储过程接受客户编号和客户级别的两个参数。
首先,它从customers
表中获得信用额度
然后,根据信用额度,它决定客户级别:PLATINUM
, GOLD
和 SILVER
。
参数p_customerlevel
存储客户的级别,并由调用程序使用
USE yiibaidb;
DROP PROCEDURE
IF EXISTS get_customerLevel;
DELIMITER $$
CREATE PROCEDURE get_customerLevel (
IN customerNum INT (10),
OUT customerLevel VARCHAR (10)
)
BEGIN
DECLARE creditlim DOUBLE ;
SELECT
creditlimit INTO creditlim
FROM
customers
WHERE
customerNumber = customerNum ;
IF creditlim > 50000 THEN
SET customerLevel = 'PLATINUM' ;
ELSEIF creditlim <= 50000
AND creditlim > 10000 THEN
SET customerLevel = 'GOLD' ;
ELSEIF creditlim <= 10000 THEN
SET customerLevel = 'SILVER' ;
END
IF ;
END$$
DELIMITER ;
CALL get_customerLevel (124 ,@customerLevel) ;
SELECT @customerLevel ;