Mysql变量值为空
问题描述:
CREATE PROCEDURE `checkAdminAccess`
(
IN accountID INT
)
BEGIN
DECLARE staffID INT;
#DECLARE num INT;
SELECT StaffID INTO staffID
FROM staff
WHERE AccountID = accountID
AND IsAdmin = 1;
SELECT staffID;
IF (staffID IS NULL) THEN
CALL raise(1356, 'Admin access required.');
END IF;
END;
对于任何输入,我都将staffID设置为NULL。 例如:Mysql变量值为空
call checkAdminAccess(3); #returns null
call checkAdminAccess(6); #returns null
而且我下面的数据是:
INSERT INTO `staff` (`StaffID`,`AccountID`,`RoleID`,`ManagerID`,`IsAdmin`) VALUES (1,3,1,1,0);
INSERT INTO `staff` (`StaffID`,`AccountID`,`RoleID`,`ManagerID`,`IsAdmin`) VALUES (2,6,2,1,1);
谁能告诉我怎么做选择一个值到MySQL中的变量?
答
问题是您检查过程的返回值,该过程必须为空,因为过程不会返回任何值。它最大返回一个结果集。
可能的解决方案:
- 更改过程function,即返回,STAFFID。
- 将过程参数添加到过程并使用它来检索staffid。上面的链接也描述了如何做到这一点。
+0
原始意图是抛出错误,而不是选择StaffID。 'SELECT staffID;'仅用于调试目的。我想在staffID为空(而不是管理员)时抛出错误。所以在这种情况下,为两种情况都调用raise方法,这是不希望的。我有微软的SQL Server背景,这将工作正常。我想知道在Mysql中是否有相同的选择方式。我也在考虑功能选项。谢谢。 –
+0
select into部分适用于您的代码。我不懂你的问题。 – Shadow
[MySQL Select into variable]可能的重复(http://*.com/questions/13351479/mysql-select-into-variable) – Barett