ストアドプロシージャを使用して、テーブルに値を挿入しています。
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を返すはずですよね?
ストアドプロシージャに「SETNOCOUNTON」が含まれていないことを確認してください。これにより、返される影響行の数が停止します。文字通り「NoCount」はオンです。
この状況では、デフォルトの応答は常に「-1」になります。