SET NOCOUNT (Transact-SQL)

适用于:sql Server Azure SQL 数据库 Azure SQL 托管实例 Microsoft Fabric 中的 Azure Synapse Analytics Warehouse

控制是否在结果集之后返回消息,该消息显示受 Transact-SQL 语句或存储过程影响的行数。 此消息是额外的结果集。

Transact-SQL 语法约定

语法

SET NOCOUNT { ON | OFF }

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

注解

如果 SET NOCOUNTON,则不返回计数。 OFF何时SET NOCOUNT返回计数。

即使SET NOCOUNTON.,函数@@ROWCOUNT也会更新。

SET NOCOUNT ON 防止向客户端发送 DONEINPROC 存储过程中每个语句的消息。 对于包含不返回太多实际数据的多个语句的存储过程,或者对于包含 Transact-SQL 循环的过程,设置SET NOCOUNTON可提供显著的性能提升,因为网络流量会大大减少。

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

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

DECLARE @NOCOUNT VARCHAR(3) = 'OFF';

IF ((512 & @@OPTIONS) = 512)
    SET @NOCOUNT = 'ON';

SELECT @NOCOUNT AS NOCOUNT;

权限

要求 公共 角色具有成员身份。

示例

以下示例将禁止显示受影响的行数的消息。 在以下示例中, (5 rows affected) 仅从第一个 SELECT 语句返回给客户端。

USE AdventureWorks2022;
GO

SET NOCOUNT OFF;
GO

-- Display the count message.
SELECT TOP (5) LastName
FROM Person.Person
WHERE LastName LIKE 'A%';
GO

-- SET NOCOUNT to ON to no longer display the count message.
SET NOCOUNT ON;
GO

SELECT TOP (5) LastName
FROM Person.Person
WHERE LastName LIKE 'A%';
GO

-- Reset SET NOCOUNT to OFF
SET NOCOUNT OFF;
GO