我创建了一个存储过程,其要求如下
当我执行存储过程时,如果用户名存在于数据库中,则输入一个用户名,然后(变量)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();
答案 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
。