7

特定の DELETE 操作で削除された行数を知りたいです。

マイクロソフトの例 Bを取り上げました。

DELETE Sales.ShoppingCartItem
OUTPUT DELETED.* 
WHERE ShoppingCartID = 20621;

count削除されたレコードのみを返すように変更しようとしました:

DELETE FROM datacache 
OUTPUT COUNT(DELETED.*)
WHERE userId=@id

しかし、これはスローします

ExceptionMessage: "Incorrect syntax near '*'."
ExceptionType: "System.Data.SqlClient.SqlException"
Message: "Error"

だから私は試しました

DELETE FROM datacache 
OUTPUT COUNT(DELETED)
WHERE userId=@id

投げる

ExceptionMessage: "Invalid column name 'DELETED'."
ExceptionType: "System.Data.SqlClient.SqlException"
Message: "Error"

私は何を取りこぼしたか?

4

3 に答える 3

10

クエリを実行して、変更された行を取得するだけです

DELETE 
FROM datacache 
WHERE userId=@id

SELECT @@ROWCOUNT
于 2015-06-15T11:43:56.427 に答える
9

OUTPUT句で集計を使用することはできません。代わりに任意の列をテーブル変数に出力し、そこから数えることができます。

DECLARE @t TABLE(id int)

DELETE FROM Sales.ShoppingCartItem
OUTPUT Deleted.ShoppingCartID INTO @t
WHERE ShoppingCartID = 20621;

SELECT COUNT(*) FROM @t
于 2015-06-15T11:43:12.683 に答える
1

後でレコードを数えてみませんか?

DELETE Sales.ShoppingCartItem
OUTPUT DELETED.ID INTO @DELETEDIDS
WHERE ShoppingCartID = 20621;

SELECT COUNT(*)
FROM @DELETEDIDS;

または、クエリを実行して使用するだけ@@ROWCOUNTです。

于 2015-06-15T11:43:20.290 に答える