1

ストアドプロシージャから戻り値を取得するにはどうすればよいですか?

ここに画像の説明を入力してください

ストアドプロシージャがそれ自体で整数を返すことに気づきました。C#でフェッチする必要があります。

4

4 に答える 4

2

C#のReturnパラメーターを使用して、その値を取得できます。以下のように

SqlParameter retval = sqlcomm.Parameters.Add("@return_value", SqlDbType.VarChar);
retval.Direction = ParameterDirection.ReturnValue;
sqlcomm.ExecuteNonQuery(); 
string retunvalue = (string)sqlcomm.Parameters["@return_value"].Value; 

プロシージャが値をフェッチできるようにするには、値を返す必要があることに注意してください。

create procedure [dbo].[usp_GetNewSeqVal]
       @SeqName nvarchar(255)
 as begin 
    declare @NewSeqVal int
    select @NewSeqVal  =1
   ---other statement
    return @NewSeqVal
 end
于 2012-08-01T06:29:14.353 に答える
1

次のコードを確認してください:

SqlParameter retval = sqlcomm.Parameters.Add("@b", SqlDbType.VarChar);
retval.Direction = ParameterDirection.ReturnValue;
sqlcomm.ExecuteNonQuery(); // MISSING
string retunvalue = (string)sqlcomm.Parameters["@b"].Value;

詳細な参照チェック リンクについては、C# のストアド プロシージャからの戻り値の取得

于 2012-08-01T06:31:31.463 に答える
0

SP では、 を返す必要がありますKategoriId。デフォルトでは、SP は、最新の挿入、更新、または削除ステートメントによって影響を受けた行の数を返します。

そして、これを機能させるために、C# とデータベース列で適切なデータ型を使用していることを確認してくださいKategoriId。過去にデータベースの列があったときに問題がDecimalあり、戻り値をに割り当てようとしたのですが、intうまくいきませんでした。

于 2012-08-01T06:31:23.823 に答える
-1

outputストア プロシージャでパラメータを使用するか、ExecuteScalar代わりに使用できますExecuteNonQuery

于 2012-08-01T06:33:10.293 に答える