SET ROWCOUNT (Transact-SQL)

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

Icône Lien de rubrique Conventions de syntaxe de 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 AdventureWorks2012;
GO
SELECT count(*) AS Count
FROM Production.ProductInventory
WHERE Quantity < 300;
GO

Voici l'ensemble des 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)

Voir aussi

Référence

Instructions SET (Transact-SQL)