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。
例如:
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中选择一个值作为变量吗?
最佳答案
问题是您检查过程的返回值,该值必须为null,因为过程不返回任何值。最大返回一个结果集。
可能的解决方案:
将过程更改为function,这将返回人员ID。
在该过程中添加out参数,并使用该参数来检索人员ID。上面的链接还介绍了如何执行此操作。