簡體   English   中英

帶OUT參數的MySQL存儲過程

[英]MySQL stored procedure with OUT parameter

使用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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM