2015-08-28 211 views
0

每當運行存儲過程時,它將返回相同的輸出106. 它是number1列的所有數據的總和。 下面我的示例代碼。 我希望它能幫助你。 如果我有任何錯誤,請糾正我。SUM函數在MYSQL存儲過程中不起作用?

存儲過程:

DELIMITER $$ 
CREATE PROCEDURE raw_data(IN user_id INT(10),IN p_id INT(10)) 
BEGIN 
    SELECT SUM(number1) AS result FROM raw_data WHERE user_id=user_id AND p_id=p_id; 
END $$ 
DELIMITER ; 

表格式:

 id name number1  number2  user_id p_id 
     1 a  10   20    1  49 
     2 b  12   12    1  49 
     3 c  20   30    2  48 
     4 d  22   22    2  48 
     5 c  20   30    2  48 
     6 d  22   22    2  49 

輸入:

CALL raw_data(1, 49); 

輸出:

result 
106 

注意:如果任何輸入給定的輸出(106)是相同的。 對不起我的英文不好。

回答

3

您的參數與列名稱混淆。開頭必須是他們的東西來區分它們:

DELIMITER $$ 
CREATE PROCEDURE raw_data(IN in_user_id INT(10), IN in_p_id INT(10)) 
BEGIN 
    SELECT SUM(rd.number1) AS result 
    FROM raw_data rd 
    WHERE rd.user_id = in_user_id AND rd.p_id = in_p_id; 
END $$ 

DELIMITER ; 

在你where聲明,在表中的列(user_id)正在相比,在表(user_id)列的最佳解決方案是命名的參數。存儲過程,所以他們將不匹配表中的列

+0

它的工作正常....非常感謝 –

+0

謝謝戈登。重命名輸入變量解決了一個問題,我總和不是總和。 –