4

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

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

现在,我在存储过程的顶部将 ROWCOUNT 设置为一个非常大的数字,然后在返回结果之前将其设置回(硬编码)常规限制。我不维护调用我的存储过程的组件,因此我可能不知道返回的行限制是否已更改。我想做的是将一个局部变量设置为当前的 ROWCOUNT 值,然后在最后将其设置回来。有什么方法可以实际查看 ROWCOUNT 设置的内容吗?

4

2 回答 2

3

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

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

您也许可以玩弄它,看看是否可以使用它

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

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

于 2010-12-21T17:37:17.677 回答
2

Stop using SET ROWCOUNT. It's being partially deprecated anyway.

Use TOP which has been there since SQL Server 2000: 11 years. This is per query and does not affect intermediate rows which means you can appyl it when needed, not globally as you are now.

Edit, Feb 2012

It's being removed in the next release after SQL Server 2012 too for insert, update and delete

于 2010-12-21T18:33:05.210 回答