Mysql变量值为空

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中的变量?

+0

[MySQL Select into variable]可能的重复(http://*.com/questions/13351479/mysql-select-into-variable) – Barett

问题是您检查过程的返回值,该过程必须为空,因为过程不会返回任何值。它最大返回一个结果集。

可能的解决方案:

  1. 更改过程function,即返回,STAFFID。
  2. 将过程参数添加到过程并使用它来检索staffid。上面的链接也描述了如何做到这一点。
+0

原始意图是抛出错误,而不是选择StaffID。 'SELECT staffID;'仅用于调试目的。我想在staffID为空(而不是管理员)时抛出错误。所以在这种情况下,为两种情况都调用raise方法,这是不希望的。我有微软的SQL Server背景,这将工作正常。我想知道在Mysql中是否有相同的选择方式。我也在考虑功能选项。谢谢。 –

+0

select into部分适用于您的代码。我不懂你的问题。 – Shadow