每当运行存储过程时,它返回相同的输出106。 它是number1列的所有数据的总和。 在我的示例代码下面。 我希望它会对你有所帮助。 如果我有任何错误,请纠正我。
商店程序:
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)相同。 抱歉我的英语不好。
答案 0 :(得分:3)
您的参数与列名混淆。总是先用它们来区分它们:
Tabs
在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
。最佳解决方案是命名参数存储过程,因此它们不匹配表中的列。