带有OUT参数的MySQL存储过程

时间:2014-03-19 20:05:43

标签: mysql

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

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返回值。

1 个答案:

答案 0 :(得分:1)

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

" @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;