SET NOCOUNT (Transact-SQL)
Se aplica a: SQL Server
Azure SQL Database
Azure SQL Instancia administrada
Azure Synapse Analytics
Warehouse en Microsoft Fabric
Controla si se devuelve un mensaje que muestra el recuento del número de filas afectadas por una instrucción o un procedimiento almacenado de Transact-SQL después del conjunto de resultados. Este mensaje es un conjunto de resultados adicional.
Convenciones de sintaxis de Transact-SQL
Sintaxis
SET NOCOUNT { ON | OFF }
Nota:
Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.
Comentarios
Cuando SET NOCOUNT
es ON
, no se devuelve el recuento. Cuando SET NOCOUNT
es OFF
, se devuelve el recuento.
La @@ROWCOUNT
función se actualiza incluso cuando SET NOCOUNT
es ON
.
SET NOCOUNT ON
evita el envío de DONEINPROC
mensajes al cliente para cada instrucción de un procedimiento almacenado. En el caso de los procedimientos almacenados que contienen varias instrucciones que no devuelven datos reales o para procedimientos que contienen bucles Transact-SQL, establecer SET NOCOUNT
para ON
puede proporcionar un aumento significativo del rendimiento, ya que el tráfico de red se reduce considerablemente.
La configuración especificada por SET NOCOUNT
está en vigor en tiempo de ejecución o ejecución y no en tiempo de análisis.
Para ver la configuración actual de este valor, ejecute la consulta siguiente.
DECLARE @NOCOUNT VARCHAR(3) = 'OFF';
IF ((512 & @@OPTIONS) = 512)
SET @NOCOUNT = 'ON';
SELECT @NOCOUNT AS NOCOUNT;
Permisos
Debe pertenecer al rol public .
Ejemplos
En este ejemplo no se muestra el mensaje que indica el número de filas afectado. En el ejemplo siguiente, (5 rows affected)
solo se devuelve a los clientes de la primera SELECT
instrucción.
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