ストアドプロシージャから戻り値を取得するにはどうすればよいですか?
ストアドプロシージャがそれ自体で整数を返すことに気づきました。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
。