SET ROWCOUNT (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Base de données SQL dans Microsoft Fabric

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 }   

Arguments

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

Notes

Important

L’utilisation SETSET ROWCOUNT n’affectera DELETEpas , INSERT, et UPDATE les instructions dans une future version de SQL Server. Évitez d’utiliser SETSET ROWCOUNT des instructions avec DELETE, INSERT, et UPDATE dans les nouveaux travaux de développement, et prévoyez de modifier les applications qui les utilisent actuellement. Pour un comportement semblable, utilisez la syntaxe TOP. Pour plus d’informations, consultez TOP (Transact-SQL).

Pour désactiver cette option afin que toutes les lignes soient retournées, spécifiez SET ROWCOUNT 0.

Définir cette SET ROWCOUNT option fait que la plupart des instructions Transact-SQL arrêtent le traitement lorsqu’elles ont été affectées par le nombre de lignes spécifié. Cela inclut les déclencheurs. Cette ROWCOUNT option n’affecte pas les curseurs dynamiques, mais elle limite le jeu de lignes de claviers et les curseurs insensibles. Il convient d'être prudent lors de l'utilisation de cette option.

SET ROWCOUNT supprime le mot-clé SELECT statement TOP si le nombre de lignes est la plus petite valeur.

Le paramètre est défini au moment de SET ROWCOUNT l’exécution ou de l’exécution et non au moment de 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. Cependant, après la candidature SET ROWCOUNT, vous pouvez voir 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.

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'. Cependant, après la candidature SET ROWCOUNT, vous pouvez voir 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, réglez ROWCOUNT à 0.

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

Voir aussi

SET Instructions (Transact-SQL)