C# 使用SqlHelper.ExecuteDataSet()执行SQL Server存储过程并获取返回值
我有一个C# 使用SqlHelper.ExecuteDataSet()执行SQL Server存储过程并获取返回值,c#,sql-server,ado.net,C#,Sql Server,Ado.net,我有一个SQL Server存储过程。此过程有一个输出参数。 在我的C#.NETAppliaction上,我通过SqlHelper.ExecuteDataSet()执行这个过程,它返回一个查询结果DataSet。 使用SqlHelper.ExecuteDataSet()时,如何从存储过程中获取输出参数。 一些文章说我需要使用SqlHelper.ExecuteNonQuery(),但我也需要DataSet 这是我的代码: public DataSet GetDataPerTable
SQL Server存储过程
。此过程有一个输出参数。
在我的C#.NET
Appliaction上,我通过SqlHelper.ExecuteDataSet()
执行这个过程,它返回一个查询结果DataSet
。
使用SqlHelper.ExecuteDataSet()
时,如何从存储过程中获取输出参数。
一些文章说我需要使用SqlHelper.ExecuteNonQuery()
,但我也需要DataSet
这是我的代码:
public DataSet GetDataPerTable(string spName, string a, string b, out int c)
{
try
{
c = 0;
SqlParameter[] spParameter = new SqlParameter[3];
spParameter[0] = new SqlParameter("@a", SqlDbType.Char, 4);
spParameter[0].Direction = ParameterDirection.Input;
spParameter[0].Value = a;
spParameter[1] = new SqlParameter("@b", SqlDbType.Char, 1);
spParameter[1].Direction = ParameterDirection.Input;
spParameter[1].Value = b;
spParameter[2] = new SqlParameter("@c", SqlDbType.Int);
spParameter[2].Direction = ParameterDirection.ReturnValue;
c = Convert.ToInt32(spParameter[2].Value);
return SqlHelper.ExecuteDataset(Configuration.MyConnectionString, CommandType.StoredProcedure, spName, spParameter);
}
catch (Exception ex)
{
throw ex;
}
}
Myc
变量始终返回0。有什么想法吗?提前感谢:)
我的程序是这样的:
CREATE PROCEDURE [dbo].SPR_MyProcedure (@a Char(4), @bChar(1), @c Int Output)
SELECT *
FROM MyTable
Set @c = 1
@c
不是返回值,而是输出参数
改变
spParameter[2].Direction = ParameterDirection.ReturnValue;
到
另外,在调用ExecuteDataset
例如:
对于参数
c
,必须使用ParameterDirection.Output
。
看
ParameterDirection.ReturnValue
是整个存储过程的返回值,默认为0或在return语句中指定的值。SqlHelper.ExecuteDataSet不返回输出参数。请参阅此链接
对于每个示例中的输出参数,它们都使用ExecuteOnQuery
有关输出功率表,请参见这些图表
我希望它能帮助你我把我的存储过程脚本放在那里:)@WillyLazuardi是的-它肯定是一个输出,而不是返回值。
spParameter[2].Direction = ParameterDirection.Output;
DataSet dataset = SqlHelper.ExecuteDataset(Configuration.MyConnectionString, CommandType.StoredProcedure, spName, spParameter);
c=(int)spParameter[2];
return dataset;