SET NOCOUNT 作用

在存储过程过,经常会用到SET NOCOUNT ON

作用:阻止在结果集中返回显示受T-SQL语句或存储过程影响的行计数的消息。

SET NOCOUNTON时,即为SET NOCOUNT ON时,不返回计数;

SET NOCOUNTOFF时,即为SET NOCOUNT OFF时,返回计数;

@@ROWCOUNT函数将更新,即使在SET NOCOUNT ON

SET NOCOUNTON时,将不向客户端发送存储过程中每个语句的DONE_IN_PROC消息。

如果存储过程中包含一些并不返回许多实际数据的语句,或者如果过程包含T-SQL循环,网络通信流量便会大量减少,因此,将SET NOCOUNT设置为ON显著提高性能

执行查询时:

1
2
SET NOCOUNT OFF;
SELECT TOP 5 a FROM A

1
2
SET NOCOUNT ON;
SELECT TOP 5 a FROM A

:SET NOCOUNT 指定的设置是在执行或运行时生效,而不是在分析时生效。

要查看此设置的当前设置,请运行以下查询。

1
2
3
DECLARE @NOCOUNT VARCHAR(3) = 'OFF';
IF ( (512 & @@OPTIONS) = 512 ) SET @NOCOUNT = 'ON';
SELECT @NOCOUNT AS NOCOUNT;

(幽蛰 写于 2018.01.22)