2016-12-14 12 views
1

ストアドプロシージャは、選択しようとすると常にnull値を返します。私はいくつかの研究を行い、OUTPUTのどこかを指定しなければなりません。それがどこでどのように行われるかはわかりません。ストアドプロシージャOUTがNULL値を返します

delimiter $$ 

Create Procedure ClientPurchases (IN idClient INT, outClientAvgPurchases DECIMAL (4,2)) 
BEGIN 

DECLARE PurchasesAvg DECIMAL(4,2) ; 

set PurchasesAvg= 
(SELECT AVG(PurchaseAmount) 
FROM Purchase 
inner join Client on idClient=Client_idClient); 
SET outClientAvgPurchases= PurchasesAvg; 

END$$ 


CALL ClientPurchase(3, @purchase); 

SELECT @purchase as 'Purchase Total'; 

答えて

2

OUTでこれについての詳細を読むパラメータ名を先行すべきキーワードです:

Create Procedure ClientPurchases (IN idClient INT, OUT ClientAvgPurchases DECIMAL (4,2)) 
... 
SET ClientAvgPurchases= PurchasesAvg; 
+0

それはまだNULL値... – Catalina

+0

を返し、私のフィールドがありませんnull – Catalina

+0

あなたの 'SELECT'が期待どおりに動いていない可能性があります。 Btwを使用すると、ストアドプロシージャをselectステートメントで終了することができます。これは、選択、コピー、および再度の選択ではありません。 – shmosel

関連する問題