在SQL中获取ROWCOUNT值(不是@@ ROWCOUNT)

时间:2010-12-21 17:30:55

标签: sql sql-server tsql rowcount

有没有办法查看ROWCOUNT的设置?

用于调用我的存储过程的组件有一个选项来限制返回的行数,但显然它通过设置ROWCOUNT来实现。一个存储过程仅返回单个聚合行,但中间查询有时会返回超过限制并被截断。执行所有这些操作的函数是通用的,用于调用其他存储过程;一些我的其他程序可能需要限制。

现在我将ROWCOUNT设置为存储过程顶部的一个非常大的数字,然后在返回结果之前将其设置回(硬编码)常规限制。我不维护调用我的存储过程的组件,所以我可能不知道返回的行限制是否已更改。我想要做的是将局部变量设置为当前的ROWCOUNT值,然后在结尾处将其设置回来。有没有办法真正看到ROWCOUNT的设置?

2 个答案:

答案 0 :(得分:3)

如果查询sys.dm_exec_sessions dmv,它将返回到此时会话中返回的行数(当然应该与@@ rowcount相同)。

SELECT row_count FROM sys.dm_exec_sessions
WHERE session_id = @@spid

您可以尝试使用它来查看是否可以使用它

  

现在我将ROWCOUNT设置为存储过程顶部的一个非常大的数字

您也可以执行SET ROWCOUNT 0,在这种情况下,它将返回所有行

答案 1 :(得分:2)

停止使用SET ROWCOUNT。无论如何,它已被部分弃用。

使用自SQL Server 2000以来一直存在的TOP:11年。这是每个查询,不会影响中间行,这意味着您可以在需要时对其进行appyl,而不是像现在一样全局。

编辑,2012年2月

SQL Server 2012 too for insert, update and delete

之后的下一个版本中删除了它