如何获取已删除记录的数量?

时间:2011-12-20 15:17:50

标签: sql-server

我有一个删除某些记录的存储过程。我需要获取已删除记录的数量。

我试着这样做:

DELETE FROM OperationsV1.dbo.Files WHERE FileID = @FileID   
SELECT @@ROWCOUNT AS DELETED;            

但DELETED显示为0,但删除了相应的记录。我试过了SET NOCOUNT OFF;没有成功。能否请你帮忙? 感谢。

3 个答案:

答案 0 :(得分:34)

这应该可以正常工作。 NOCOUNT的设置无关紧要。

你们两人之间是否有任何陈述?在每个语句之后重置@@ROWCOUNT,因此您必须立即检索该值而不插入任何语句。

答案 1 :(得分:2)

我在调试存储过程时使用此代码片段来验证操作后的计数,例如delete:

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

答案 2 :(得分:-6)

START TRANSACTION;
SELECT @before:=(SELECT count(*) FROM OperationsV1.dbo.Files);
DELETE FROM OperationsV1.dbo.Files WHERE FileID = @FileID;
SELECT @after:=(SELECT count(*) FROM OperationsV1.dbo.Files);
COMMIT;
SELECT @before-@after AS DELETED;

我不知道SQL服务器,但在MySQL SELECT count(*) FROM ...中是一个非常便宜的操作。