SET NOCOUNT (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsEntrepôt 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 }

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Notes

Si la valeur de SET NOCOUNT est ON, le nombre n'est pas renvoyé. Si la valeur de SET NOCOUNT est définie à OFF, ce nombre est renvoyé.

La fonction @@ROWCOUNT est mise à jour, même lorsque SET NOCOUNT est défini à ON.

SET NOCOUNT défini sur ON empêche l’envoi de messages DONEINPROC au client pour chaque instruction d’une procédure stockée. Dans le cas de procédures stockées contenant plusieurs instructions qui ne retournent que peu de données ou pour les procédures qui contiennent des boucles Transact-SQL, la définition de SET NOCOUNT sur ON peut améliorer considérablement les performances car le trafic réseau est sensiblement réduit.

Le paramètre spécifié par SET NOCOUNT est appliqué lors de l'exécution, et non pas lors 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 lignes affectées) » est retourné aux clients uniquement à partir de la première instruction 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

Voir aussi