【发布时间】:2015-06-15 20:43:27
【问题描述】:
我有一个存储过程 CalculateTotal 从表支出返回金额列中所有记录的总和
`CREATE PROCEDURE CalculateTotal
@Name varchar(50),
@Month int
@year
As
SELECT SUM(Amount) As Total
FROM Spendings
WHERE MONTH(Date) = @Month AND YEAR(Date)= @Year AND Name = @Name`
当我从 SQLServer 执行此过程时,执行成功并返回总金额,
我需要从 C# 中获取 Total 的值,我尝试了以下代码,
public void CalculateTotal(string name, int month , int year)
{
cmd = connection.CreateCommand();
cmd.CommandText = "EXECUTE CalculateTotal @Name,@Month,@Year";
cmd.Parameters.AddWithValue("@Name", name);
cmd.Parameters.AddWithValue("@Month", month);
cmd.Parameters.AddWithValue("@Year", year);
reader = cmd.ExecuteReader();
if(reader.HasRows)
{
while (reader.Read())
{
int total = (int)reader["Total"];
}
}
}
当我调试它时,'While' 条件为真,当'while' 循环体执行时遇到称为 IndexOutOfRangeException 的错误:Total
如何在 c# 中检索 SUM 函数的值
【问题讨论】:
-
您使用存储过程而不是函数是否有特定原因?如果只需要求和,函数可能更容易编写和调用
-
@Bala 你试过我的答案了吗?
-
哎呀,很抱歉回复晚了@ofcoursedude。仅出于一个原因,我使用存储过程,即使我在另一个系统中运行 dll,我也可以轻松修改查询。
-
@iJay 感谢您的回答。我试过了,但是在调试时returnParameter返回0,但要返回的实际值为100。
-
@Bala 它对我来说很好用,如果您有兴趣,请再次检查。我做了一些小改动
标签: c# mysql sql-server stored-procedures