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。上面的链接还介绍了如何执行此操作。

08-06 03:46