使用out参数时,我一直得到null值。

CREATE PROCEDURE `getTotalPoints`(IN `uEmail` VARCHAR(255), OUT `iTotal` DECIMAL(5,2) UNSIGNED)
begin
select
coalesce(
coalesce(sum(points_earned),0) -
coalesce(sum(points_lost),0) +
coalesce(sum(points_taken),0) -
coalesce(sum(points_traded),0),0)
from user_activities
where user_email=@uEmail into @iTotal;
end


我知道select语句可以正常工作,因为没有out参数,结果是0.00。

我敢肯定这很简单,但是我研究和尝试过的一切都导致了相同的NULL返回值。

最佳答案

删除变量引用上的“ @”符号。

@uEmail”和“ @iTotal”是对用户定义的变量的引用,而不是过程参数。

您希望将过程参数引用为“ uEmail”和“ iTotal”,而不使用“ @”。



或者,如果您对用户定义的变量进行了必要的赋值,则可能使该语句起作用,在过程主体中类似以下内容:

-- set user-defined variable to value from procedure argument
SET @uEmail = uEmail;

-- statement references user-defined variables
SELECT ...@uEmail ... INTO @iTotal;

-- set procedure OUT argument from user-defined variable
SET iTotal = @iTotal;

关于mysql - 带OUT参数的MySQL存储过程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22516936/

10-11 02:56