使用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返回值。
答案 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;