5

SQL Server 2008 で以前に削除されたレコードの数を選択する方法がわかりません。このようなものですか?

DELETE FROM [table] WHERE [id]=10
SELECT SCOPE_IDENTITY()
4

3 に答える 3

16

ステートメントSELECT @@ROWCOUNTの直後に使用します。詳細についてDELETE、MSDNを参照してください。@@ROWCOUNT

@@ROWCOUNT

最後のステートメントの影響を受けた行数を返します。

備考

..。

データ操作言語(DML)ステートメントは@@ROWCOUNT、クエリの影響を受ける行数に値を設定し、その値をクライアントに返します。DMLステートメントは、クライアントに行を送信しない場合があります。

@@ROWCOUNT他のステートメントは、行自体に影響を与えない場合でも、の値を変更する可能性があるため、「直後」と言うことに注意してください。

DECLARE CURSOR値を1にFETCH設定します。@@ROWCOUNT

..。

、、、、などのステートメントUSESET <option>または値を0にDEALLOCATE CURSORリセットします。CLOSE CURSORBEGIN TRANSACTIONCOMMIT TRANSACTIONROWCOUNT

于 2013-01-13T04:32:38.520 に答える
2

することもできますSET NOCOUNT OFF

備考

SET NOCOUNT が ON の場合、カウント (Transact-SQL ステートメントによって影響を受ける行の数を示す) は返されません。SET NOCOUNT が OFF の場合、カウントを返します。

于 2013-01-13T04:45:50.903 に答える
0

ストアド プロシージャをデバッグするときは、通常、次のコード スニペットを使用します。

DELCARE @Msg varchar(30)
...
SELECT @Msg = CAST(@@ROWCOUNT AS VARCHAR(10)) + ' rows affected'
RAISERROR (@Msg, 0, 1) WITH NOWAIT

削除など、操作の前後に使用します。コード内のどのスニペットを使用しているかを追跡するために、メッセージに番号を入れます。多くのコード行を持つ大規模なストアド プロシージャを扱う場合に非常に役立ちます。

于 2013-05-23T18:51:12.173 に答える