无法在MySql中的if else语句中设置变量

时间:2016-04-23 06:40:30

标签: mysql

我创建了一个存储过程,其要求如下

当我执行存储过程时,如果用户名存在于数据库中,则输入一个用户名,然后(变量)result_userId将设置为userId ELSE如果数据库中不存在用户名,则(变量)result_userId将被设置为数字99

但我不能这样做

请帮助我!

:: CODE BELOW ::

DELIMITER $$
USE `shoppy` $$
CREATE PROCEDURE `testProc02`
(
    IN  _username  CHAR(50),
    OUT result_userId   INT UNSIGNED
)
BEGIN
    SELECT @uId := userId FROM user 
    WHERE userName = _username;
    IF @uId = NULL THEN
        SET result_userId = 99;
    ELSE
        SET result_userId = @uId;
    END IF;    
END $$
DELIMITER ;

当我打电话给testProc02();

enter image description here

1 个答案:

答案 0 :(得分:3)

您无法在 = 上使用等于运算符null。您必须测试表达式IS NULL或使用空安全相等运算符<=>

您的代码应为

DELIMITER $$
USE `shoppy` $$
CREATE PROCEDURE `testProc02`
(
    IN  _username  CHAR(50),
    OUT result_userId   INT UNSIGNED
)
BEGIN
    SELECT @uId := userId FROM user 
    WHERE userName = _username;
    IF @uId IS NULL THEN
        SET result_userId = 99;
    ELSE
        SET result_userId = @uId;
    END IF;    
END $$
DELIMITER ;

@uID = NULL总是评估为 null if解释为 false