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é.
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 prochaine version 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. Il est, en outre, recommandé de réécrire, selon la syntaxe TOP, les instructions DELETE, INSERT et UPDATE qui utilisent actuellement SET ROWCOUNT. Pour plus d'informations, consultez DELETE (Transact-SQL), INSERT (Transact-SQL) ou UPDATE (Transact-SQL).
La valeur de l'option SET ROWCOUNT est ignorée pour les instructions INSERT, UPDATE et DELETE impliquant des tables distantes et des vues partitionnées locales et distantes.
Pour désactiver cette option de manière à renvoyer toutes les lignes, utilisez SET ROWCOUNT 0.
[!REMARQUE]
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é, y compris les déclencheurs et les instructions de modifications des données tels que INSERT, UPDATE et DELETE. 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. Cette option doit être utilisée avec précaution et essentiellement avec l'instruction SELECT.
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 ignorée dans les instructions INSERT, UPDATE et DELETE lorsqu'une expression TOP est explicitement utilisée dans la même instruction. Il en va de même pour les instructions où INSERT s'accompagne d'une clause SELECT.
L'option SET ROWCOUNT est définie lors de l'exécution, et non pas durant l'analyse.
Autorisations
Nécessite l'appartenance en tant que membre au rôle public.
Exemple
SET ROWCOUNT arrête le traitement après le nombre de lignes spécifié. Dans cet exemple, notez que 545 lignes répondent aux critères de Quantity inférieure à 300. Toutefois, d'après le nombre de lignes renvoyé par la mise à jour, vous pouvez constater que toutes les lignes n'ont pas été traitées. ROWCOUNT affecte toutes les instructions Transact-SQL.
USE AdventureWorks;
GO
SELECT count(*) AS Count
FROM Production.ProductInventory
WHERE Quantity < 300;
GO
Voici l'ensemble des résultats.
Count
-----------
537
(1 row(s) affected)
Maintenant, définissez ROWCOUNT à 4 et mettez à jour toutes les lignes avec une Quantity inférieure à 300.
SET ROWCOUNT 4;
UPDATE Production.ProductInventory
SET Quantity = 400
WHERE Quantity < 300;
GO
(4 row(s) affected)