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

ストアドプロシージャがそれ自体で整数を返すことに気づきました。C#でフェッチする必要があります。
ストアドプロシージャから戻り値を取得するにはどうすればよいですか?

ストアドプロシージャがそれ自体で整数を返すことに気づきました。C#でフェッチする必要があります。
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
次のコードを確認してください:
SqlParameter retval = sqlcomm.Parameters.Add("@b", SqlDbType.VarChar);
retval.Direction = ParameterDirection.ReturnValue;
sqlcomm.ExecuteNonQuery(); // MISSING
string retunvalue = (string)sqlcomm.Parameters["@b"].Value;
詳細な参照チェック リンクについては、C# のストアド プロシージャからの戻り値の取得
SP では、 を返す必要がありますKategoriId。デフォルトでは、SP は、最新の挿入、更新、または削除ステートメントによって影響を受けた行の数を返します。
そして、これを機能させるために、C# とデータベース列で適切なデータ型を使用していることを確認してくださいKategoriId。過去にデータベースの列があったときに問題がDecimalあり、戻り値をに割り当てようとしたのですが、intうまくいきませんでした。
outputストア プロシージャでパラメータを使用するか、ExecuteScalar代わりに使用できますExecuteNonQuery。