SET ROWCOUNT (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Demande à SQL Server d'arrêter l'exécution de la requête après avoir renvoyé le nombre de lignes spécifié.

Conventions de la syntaxe Transact-SQL

Syntaxe

SET ROWCOUNT { number | @number_var }   

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.

Arguments

number | @number_var
Nombre (entier) de lignes à traiter avant l'arrêt de la requête spécifiée.

Notes

Important

L'utilisation de SET ROWCOUNT n'affectera en rien les instructions DELETE, INSERT et UPDATE dans la version ultérieure de SQL Server. Évitez d’utiliser SET ROWCOUNT avec les instructions DELETE, INSERT et UPDATE dans les nouvelles tâches de développement et pensez à modifier les applications qui l’utilisent actuellement. Pour un comportement semblable, utilisez la syntaxe TOP. Pour plus d’informations, consultez TOP (Transact-SQL).

Pour désactiver cette option de manière à renvoyer toutes les lignes, utilisez SET ROWCOUNT 0.

L'utilisation de l'option SET ROWCOUNT arrête le traitement de la plupart des instructions Transact-SQL lorsqu'elles ont atteint le nombre de lignes spécifié. Cela inclut les déclencheurs. L'option ROWCOUNT n'a aucun effet sur les curseurs dynamiques, mais elle limite l'ensemble de lignes de curseurs de type KEYSET et INSENSITIVE. Il convient d'être prudent lors de l'utilisation de cette option.

SET ROWCOUNT a priorité sur le mot clé TOP d'une instruction SELECT si le compte de lignes a la plus petite valeur.

L'option SET ROWCOUNT est définie lors de l'exécution, et non pas durant l'analyse.

Autorisations

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

Exemples

SET ROWCOUNT arrête le traitement après le nombre de lignes spécifié. Dans cet exemple, notez que plus de 500 lignes répondent aux critères de Quantity inférieure à 300. Toutefois, après avoir appliqué SET ROWCOUNT, vous pouvez remarquer que toutes les lignes n'ont pas été retournées.

USE AdventureWorks2022;  
GO  
SELECT count(*) AS Count  
FROM Production.ProductInventory  
WHERE Quantity < 300;  
GO  

Voici le jeu de résultats obtenu.

Count 
----------- 
537 

(1 row(s) affected)

Définissez maintenant ROWCOUNT sur 4 et retournez toutes les lignes pour démontrer que seules 4 lignes sont retournées.

SET ROWCOUNT 4;  
SELECT *  
FROM Production.ProductInventory  
WHERE Quantity < 300;  
GO  
  
-- (4 row(s) affected)

Exemples : Azure Synapse Analytics et Analytics Platform System (PDW)

SET ROWCOUNT arrête le traitement après le nombre de lignes spécifié. Dans cet exemple, notez que plus de 20 lignes répondent aux critères de AccountType = 'Assets'. Toutefois, après avoir appliqué SET ROWCOUNT, vous pouvez remarquer que toutes les lignes n'ont pas été retournées.

-- Uses AdventureWorks  
  
SET ROWCOUNT 5;  
SELECT * FROM [dbo].[DimAccount]  
WHERE AccountType = 'Assets';  

Pour retourner toutes les lignes, affectez la valeur 0 à ROWCOUNT.

-- Uses AdventureWorks  
  
SET ROWCOUNT 0;  
SELECT * FROM [dbo].[DimAccount]  
WHERE AccountType = 'Assets';  

Voir aussi

Instructions SET (Transact-SQL)