Ale*_*der 2 sql sql-server output-clause
我想知道在某个DELETE操作中删除了多少行.
我把微软例B是
DELETE Sales.ShoppingCartItem
OUTPUT DELETED.*
WHERE ShoppingCartID = 20621;
Run Code Online (Sandbox Code Playgroud)
并尝试修改它只返回count已删除的记录:
DELETE FROM datacache
OUTPUT COUNT(DELETED.*)
WHERE userId=@id
Run Code Online (Sandbox Code Playgroud)
但这引发了
ExceptionMessage: "Incorrect syntax near '*'."
ExceptionType: "System.Data.SqlClient.SqlException"
Message: "Error"
Run Code Online (Sandbox Code Playgroud)
所以我试过了
DELETE FROM datacache
OUTPUT COUNT(DELETED)
WHERE userId=@id
Run Code Online (Sandbox Code Playgroud)
哪个扔了
ExceptionMessage: "Invalid column name 'DELETED'."
ExceptionType: "System.Data.SqlClient.SqlException"
Message: "Error"
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
只需运行您的查询并获取修改后的行
DELETE
FROM datacache
WHERE userId=@id
SELECT @@ROWCOUNT
Run Code Online (Sandbox Code Playgroud)
您不能在OUTPUT子句中使用聚合.您可以将任何列输出到表变量中,并从那里开始计数:
DECLARE @t TABLE(id int)
DELETE FROM Sales.ShoppingCartItem
OUTPUT Deleted.ShoppingCartID INTO @t
WHERE ShoppingCartID = 20621;
SELECT COUNT(*) FROM @t
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5990 次 |
| 最近记录: |