2

私は持っていSQL Server Stored Procedureます。このプロシージャには出力パラメータがあります。私のC#.NETAppliaction では、このプロシージャを経由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 parameterを使用する必要がありますcADO.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 に答える