SET NOCOUNT (Transact-SQL)含义

来源:互联网 发布:免费的虚拟光驱软件 编辑:程序博客网 时间:2024/06/04 23:33

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

SET NOCOUNT { ON | OFF } 

当 SET NOCOUNT 为 ON 时,不返回计数。当 SET NOCOUNT 为 OFF 时,返回计数。

即使当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数。

当 SET NOCOUNT 为 ON 时,将不向客户端发送存储过程中每个语句的 DONE_IN_PROC 消息。如果存储过程中包含一些并不返回许多实际数据的语句,或者如果过程包含 Transact-SQL 循环,网络通信流量便会大量减少,因此,将 SET NOCOUNT 设置为 ON 可显著提高性能。

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

要求具有 public 角色的成员身份。

以下示例将禁止显示受影响的行数的消息。

复制代码
USE AdventureWorks2008R2;GOSET NOCOUNT OFF;GO-- Display the count message.SELECT TOP(5)LastNameFROM Person.PersonWHERE LastName LIKE 'A%';GO-- SET NOCOUNT to ON to no longer display the count message.SET NOCOUNT ON;GOSELECT TOP(5) LastNameFROM Person.PersonWHERE LastName LIKE 'A%';GO-- Reset SET NOCOUNT to OFFSET NOCOUNT OFF;GO



@@ROWCOUNT (Transact-SQL)

返回受上一语句影响的行数。如果行数大于 20 亿,请使用 ROWCOUNT_BIG。

Transact-SQL 语法约定

@@ROWCOUNT

int

Transact-SQL 语句可以通过下列方式设置 @@ROWCOUNT 的值:

  • 将 @@ROWCOUNT 设置为受影响或被读取的行的数目。可以将行发送到客户端,也可以不发送。

  • 保留前一个语句执行中的 @@ROWCOUNT。

  • 将 @@ROWCOUNT 重置为 0 但不将该值返回到客户端。

执行简单分配的语句始终将 @@ROWCOUNT 值设置为 1。不将任何行发送到客户端。这些语句的示例如下:SET @local_variable、RETURN、READTEXT 以及不带查询 Select 语句,如 SELECT GETDATE() 或 SELECT'Generic Text'

在查询中执行分配或使用 RETURN 的语句将 @@ROWCOUNT 值设置为受查询影响或由查询读取的行数,例如:SELECT @local_variable = c1 FROM t1。

数据操作语言 (DML) 语句将 @@ROWCOUNT 值设置为受查询影响的行数,并将该值返回到客户端。DML 语句不会将任何行发送到客户端。

DECLARE CURSOR 和 FETCH 将 @@ROWCOUNT 值设置为 1。

EXECUTE 语句保留前一个 @@ROWCOUNT。

USE、SET <option>、DEALLOCATE CURSOR、CLOSE CURSOR、BEGIN TRANSACTION 或 COMMIT TRANSACTION 等语句将 ROWCOUNT 值重置为 0。


1 0
原创粉丝点击