我在MySQL中创建了一个存储过程来从SELECT返回一些参数,但不起作用 .
在userID和otherID中返回0 .
有人可以帮帮我吗?谢谢
如果存在sp_XPTO,则删除程序; DELIMITER ;; CREATE PROCEDURE sp_XPTO(OUT userID INT UNSIGNED,OUT otherID INT UNSIGNED,in bookID INT UNSIGNED)BEGIN SELECT userID = E.userID,otherID = E.otherID FROM Exp as E WHERE E.bookID = bookID;结束 ;; DELIMITER;
更新:
对不起,在我经常阅读之后,我得出结论,错误在于我如何调用存储过程,并且Ravinder是正确的 . 谢谢
1 回答
我不确定您是否打算检查数据库中是否存在值 .
因为,您的
select
语句正在进行比较但不进行分配 .使用上面的语句,您可能会认为
E.userID
的值已分配给OUT
参数userID
. 但是你使用的语法是错误的 .在上面的语句中,两个表达式都返回
boolean
. 由于userID
值与E.userID
不匹配,因此比较结果为false
,您看到0
.otherID
变量也是如此 .要为变量赋值,必须使用
INTO
指令运算符 .Example :
更改存储过程如下:
使用所需参数调用该过程并读取输出参数 .