23

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

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 が返されるはずですよね?

4

1 に答える 1

52

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

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

于 2013-04-10T11:13:59.560 に答える