SET ROWCOUNT (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics 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 }
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.
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';