web-dev-qa-db-ja.com

ExecuteNonQuery()は常に-1を返します

ストアドプロシージャを使用して、テーブルに値を挿入しています。

CREATE PROCEDURE [dbo].[Sp_InsertValue]
@Val1 as nvarchar(50)
@Val2 as nvarchar(50)
as
BEGIN
    IF NOT EXISTS(SELECT * FROM @mytable WHERE ID=@Val1)
    INSERT INTO @mytable VALUES(@VAL2)
END

ExecuteNonQuery()を使用して、C#を使用してASP.NETでこのストアドプロシージャを呼び出しています。正常に動作し、問題はありません。値が存在しない場合は挿入されます。問題は、cmd.ExecuteNonQuery()が常に-1を返すことです。レコードが挿入された場合は1を返し、そうでない場合は0を返すはずですよね?

21
Lali

ストアドプロシージャに「SETNOCOUNTON」が含まれていないことを確認してください。これにより、返される影響行の数が停止します。文字通り「NoCount」はオンです。

この状況では、デフォルトの応答は常に「-1」になります。

45
Stuart Manning