2

我有一个SQL Server Stored Procedure. 这个过程有一个输出参数。在我的C#.NET应用程序中,我通过执行此过程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;
            }
        }

我的c变量总是返回 0。有什么想法吗?提前致谢 :)

我的程序是这样的:

CREATE PROCEDURE [dbo].SPR_MyProcedure (@a Char(4), @bChar(1), @c Int Output)  
SELECT * 
FROM MyTable
Set @c = 1
4

3 回答 3

7

@c不是返回值,而是输出参数

改变

spParameter[2].Direction = ParameterDirection.ReturnValue; 

 spParameter[2].Direction = ParameterDirection.Output;

此外,您需要c在调用后设置变量,ExecuteDataset 例如:

DataSet dataset = SqlHelper.ExecuteDataset(Configuration.MyConnectionString, CommandType.StoredProcedure, spName, spParameter);
c=(int)spParameter[2];
return dataset;     
于 2012-11-07T08:48:10.013 回答
4

您必须使用ParameterDirection.Outputfor 参数c。请参阅在 ADO.NET 中获取输出参数值

ParameterDirection.ReturnValue是整个存储过程的返回值,默认为0或RETURN语句中指定的值。

于 2012-11-07T08:54:35.340 回答
0

SqlHelper.ExecuteDataSet 不返回输出参数。看到这个链接

http://www.mediachase.com/documentation/fileuploader/Api/Mediachase.FileUploader.SqlHelper.ExecuteDataset_overload_5.html

对于他们使用 ExecuteNonQuery 的每个示例中的输出参数,请参阅这些文章以获取输出参数

http://forums.asp.net/t/360456.aspx/1

http://www.codeproject.com/Articles/15666/Data-Access-Application-Block-NET-2-0-Get-Return-V

我希望它可以帮助你

于 2012-11-07T09:10:44.073 回答