SET NOCOUNT (Transact-SQL)
Aplica-se a: SQL Server
Banco de Dados
SQL do Azure Instância Gerenciada de
SQL do Azure Azure Synapse Analytics
Warehouse no Microsoft Fabric
Controla se uma mensagem que mostra o número de linhas afetadas por uma instrução Transact-SQL ou por um procedimento armazenado é retornada após o conjunto de resultados. Esta mensagem é um conjunto de resultados extra.
Convenções de sintaxe de Transact-SQL
Sintaxe
SET NOCOUNT { ON | OFF }
Observação
Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.
Comentários
Quando SET NOCOUNT
é ON
, a contagem não é retornada. Quando SET NOCOUNT
é OFF
, a contagem é retornada.
A @@ROWCOUNT
função é atualizada mesmo quando SET NOCOUNT
é ON
.
SET NOCOUNT ON
impede o envio de DONEINPROC
mensagens ao cliente para cada instrução em um procedimento armazenado. Para procedimentos armazenados que contêm várias instruções que não retornam muitos dados reais ou para procedimentos que contêm loops Transact-SQL, a configuração SET NOCOUNT
como ON
pode fornecer um aumento significativo de desempenho, pois o tráfego de rede é bastante reduzido.
A configuração especificada por SET NOCOUNT
está em vigor no tempo de execução ou execução e não no momento da análise.
Para exibir a configuração atual dessa configuração, execute a consulta a seguir.
DECLARE @NOCOUNT VARCHAR(3) = 'OFF';
IF ((512 & @@OPTIONS) = 512)
SET @NOCOUNT = 'ON';
SELECT @NOCOUNT AS NOCOUNT;
Permissões
Requer associação à função pública .
Exemplos
O exemplo a seguir evita que a mensagem sobre o número de linhas afetadas seja exibida. No exemplo a seguir, (5 rows affected)
só é retornado aos clientes da primeira SELECT
instrução.
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