1

単純なINSERTステートメントで構成されるSQLServerストアドプロシージャをC#から呼び出しています。ExecuteNonQuery()は、更新がない場合を除いて、ステートメントOKの影響を受ける行数を返します。更新がない場合は-1になります。

これは私にはあまり意味がありません。-1行はどのように影響を受けますか?

4

2 に答える 2

1

SET NOCOUNTがONの場合でも、@@ROWCOUNT関数は更新されます。

ソース

NOCOUNTそれで、あなたはオフにすることで行き止まりになっているので、これを試してください:

@@ROWCOUNTで使用ExecuteNonQuery

SPの最後で、の代わりに実行SELECT @@ROWCOUNTして使用します。これにより、希望する結果が返されます。ExecuteScalarExecuteNonQuery

于 2013-02-13T02:33:41.927 に答える
1

挿入/削除/更新クエリを持つストアドプロシージャを使用してExecuteNonQuery()を呼び出すと、-1を取得できます。これは、ストアドプロシージャがクエリ(挿入/更新/削除)を呼び出さない場合に発生します。これを理解するのに役立つ1つの例を次に示します。

StoredProcedure- MySQL

DELIMITER $$ DROP PROCEDURE IF EXISTS sp_DML $$ CREATE PROCEDURE sp_DML

P_Operation varchar(50)
)BEGIN

  if(P_Operation='Insert')
    /*  Insert Statment*/
  end if;

  if(P_Operation='Update')
    /*  Update Statment*/
    end if;
  if(P_Operation='Delete')
    /*Delete Statment*/
    end if;          

END $$

ExecuteNonQuery();を使用してこのSPを呼び出す場合。そして、パラメータP_Operationを'NoOpeartion'として渡すと、ストアドプロシージャに書き込まれた条件を満たさないため、常に-1が返されます。

于 2016-07-11T11:29:57.833 に答える