当前位置:  开发笔记 > 数据库 > 正文

计算SQL Server存储过程中已删除行的数量

如何解决《计算SQLServer存储过程中已删除行的数量》经验,为你挑选了4个好方法。

在SQL Server 2005中,是否有一种删除行并被告知实际删除了多少行的方法?

我可以select count(*)用相同的条件做一件事,但我需要这完全值得信赖.

我的第一个猜测是使用@@ROWCOUNT变量 - 但是没有设置,例如

delete 
from mytable 
where datefield = '5-Oct-2008' 

select @@ROWCOUNT 

总是返回0.

MSDN建议OUTPUT构建,例如

delete from mytable 
where datefield = '5-Oct-2008' 
output datefield into #doomed

select count(*) 
from #doomed

这实际上失败了,语法错误.

有任何想法吗?



1> wcm..:

你试过SET NOCOUNT OFF吗?



2> Simon..:

我在SQL2000中使用@@ ROWCOUNT这个确切的目的没有问题.确保在检查之前不会无意中重置此计数(BOL:'此变量由任何不返回行的语句设置为0,例如IF语句').



3> Adly..:

这样做:

SET NOCOUNT off ;
SELECT @p1 = @@ROWCOUNT

其中p1是您在存储过程中设置的输出参数.希望能帮助到你.



4> Ilya Kocheto..:

在您的示例中@@ROWCOUNT应该可以工作-这是找出许多已删除行的正确方法。如果您尝试从应用程序中删除某些内容,则需要使用SET NOCOUNT ON

根据MSDN,即使SET NOCOUNT设置为ON,也会更新@@ ROWCOUNT函数,因为这SET NOCOUNT只会影响执行后获得的消息。

因此,如果您尝试使用@@ROWCOUNTADO.NET 的结果,则SET NOCOUNT ON绝对可以提供帮助。

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有