Partage via


SET NOCOUNT (Transact-SQL)

S’applique à : SQL ServerAzure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Warehouse dans Microsoft Fabric

Vérifie si un message indiquant le nombre de lignes concernées par une instruction ou une procédure stockée Transact-SQL est retourné après le jeu de résultats. Ce message est un jeu de résultats supplémentaire.

Conventions de la syntaxe Transact-SQL

Syntaxe

SET NOCOUNT { ON | OFF }

Notes

Quand SET NOCOUNT c’est ONle cas, le nombre n’est pas retourné. Lorsque SET NOCOUNT c’est OFFle cas, le nombre est retourné.

La @@ROWCOUNT fonction est mise à jour même lorsqu’elle SET NOCOUNT est ON.

SET NOCOUNT ON empêche l’envoi de DONEINPROC messages au client pour chaque instruction dans une procédure stockée. Pour les procédures stockées qui contiennent plusieurs instructions qui ne retournent pas beaucoup de données réelles ou pour les procédures qui contiennent des boucles Transact-SQL, le paramètre SET NOCOUNT peut ON fournir une amélioration significative des performances, car le trafic réseau est considérablement réduit.

Le paramètre spécifié est SET NOCOUNT en vigueur au moment de l’exécution ou de l’exécution et non au moment de l’analyse.

Pour afficher la valeur actuelle de ce paramètre, exécutez la requête suivante.

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

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

SELECT @NOCOUNT AS NOCOUNT;

Autorisations

Nécessite l'appartenance au rôle public .

Exemples

L'exemple suivant empêche l'affichage du message indiquant le nombre de lignes concernées. Dans l’exemple suivant, (5 rows affected) est retourné uniquement aux clients de la première SELECT instruction.

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