我有一个删除某些记录的存储过程。我需要得到被删除的记录的数量。
我试着这样做:
DELETE FROM OperationsV1.dbo.Files WHERE FileID = @FileID
SELECT @@ROWCOUNT AS DELETED;
但是deleted显示为0,尽管相应的记录已被删除。我尝试将NOCOUNT设置为OFF;但没有成功。你能帮帮忙吗?谢谢。
发布于 2011-12-20 23:20:16
这应该可以很好地工作。NOCOUNT
的设置无关紧要。这只会影响发回客户端的n rows affected
信息,对@@ROWCOUNT
的工作没有影响。
您是否在这两个语句之间有任何语句?@@ROWCOUNT
在每条语句之后都会重置,因此您必须立即检索值,而不能有任何中间语句。
发布于 2013-05-24 02:45:05
在调试存储过程以验证操作后的计数时,我使用此代码片段:
DECLARE @Msg varchar(30)
...
SELECT @Msg = CAST(@@ROWCOUNT AS VARCHAR(10)) + ' rows affected'
RAISERROR (@Msg, 0, 1) WITH NOWAIT
发布于 2011-12-20 23:24:19
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 server,但在MySQL中,SELECT count(*) FROM ...
是一个非常便宜的操作。
https://stackoverflow.com/questions/8577632
复制相似问题