@@ROWCOUNT (Transact-SQL)

S’applique à :yesSQL Server (toutes les versions prises en charge) YesAzure SQL Database YesAzure SQL Managed Instance

Retourne le nombre de lignes affectées par la dernière instruction. Si le nombre de lignes est supérieur à 2 milliards, utilisez ROWCOUNT_BIG.

Topic link iconConventions de la syntaxe Transact-SQL

Syntaxe

@@ROWCOUNT  

Notes

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 et versions antérieures, consultez Versions antérieures de la documentation.

Types de retour

int

Notes

Les instructions Transact-SQL peuvent définir la valeur de @@ROWCOUNT comme suit :

  • En attribuant à @@ROWCOUNT le nombre de lignes affectées ou lues. Les lignes peuvent être, ou ne pas être, envoyées au client.

  • En conservant la valeur de @@ROWCOUNT issue de l'exécution de l'instruction précédente.

  • En réinitialisant @@ROWCOUNT à 0 sans retourner la valeur au client.

Les instructions qui réalisent une affectation simple attribuent toujours à @@ROWCOUNT la valeur 1. Aucune ligne n'est envoyée au client. Parmi ces instructions figurent SET @local_variable, RETURN, READTEXT, ainsi que les instructions de sélection sans requête telles que SELECT GETDATE() ou SELECT 'Generic Text'.

Les instructions qui réalisent une affectation dans une requête ou utilisent RETURN dans une requête attribuent à @@ROWCOUNT le nombre de lignes affectées ou lues par la requête, par exemple SELECT @local_variable = c1 FROM t1.

Les instructions DML (Data Manipulation Language) attribuent à @@ROWCOUNT le nombre de lignes affectées par la requête et retournent cette valeur au client. Les instructions DML peuvent ne pas envoyer de lignes au client.

DECLARE CURSOR et FETCH attribuent à @@ROWCOUNT la valeur 1.

Les instructions EXECUTE conservent la valeur @@ROWCOUNT antérieure.

Les instructions telles que USE, SET <option>, DEALLOCATE CURSOR, CLOSE CURSOR, PRINT, RAISERROR, BEGIN TRANSACTION ou COMMIT TRANSACTION réinitialisent la valeur ROWCOUNT à 0.

Les procédures stockées compilées en mode natif conservent le @@ROWCOUNT précédent. Les instructions Transact-SQL à l'intérieur des procédures stockées compilées en mode natif ne définissent pas @@ROWCOUNT. Pour plus d’informations, consultez Procédures stockées compilées en mode natif.

Exemples

L'exemple suivant exécute une instruction UPDATE et utilise @@ROWCOUNT pour déterminer si des lignes ont été modifiées.

USE AdventureWorks2012;  
GO  
UPDATE HumanResources.Employee   
SET JobTitle = N'Executive'  
WHERE NationalIDNumber = 123456789  
IF @@ROWCOUNT = 0  
PRINT 'Warning: No rows were updated';  
GO  

Voir aussi

Fonctions système (Transact-SQL)
SET ROWCOUNT (Transact-SQL)