@@ROWCOUNT - 2eme Partie

Quelques  doutes m'assaillant depuis mon post sur cette variable, j'ai réalisé quelques tests très simples et consulté notre bible à tous..la MSDN :-)

Voici l'exemple très simple (la table T1 contient 5 lignes) :

DECLARE @i INT 
SET @i = 5 
SELECT * FROM T1 
IF(@i = 5) 
BEGIN  
    PRINT 'OK'  
    PRINT @@ROWCOUNT 
END 
ELSE 
BEGIN  
    PRINT 'KO'  
    PRINT @@ROWCOUNT 
END
END


Et le résultat :

 

(5 ligne(s) affectée(s))
OK
0


L'instruction IF renvoie donc O (ce qui paraît logique).
Je n'ajoute pas de PRINT @@ROWCOUNT avant ce IF car le PRINT affecterais la valeur 0 à notre variable (je l'ai fait au préalable de cet exemple pour vérifier que l'on ai bien la valeur 5 renvoyé).

 

De la même manière les instructions de type

 

  • d'affectation (SET, SELECT sans requêtes comme SELECT GETDATE()) renvoient un @@ROWCOUNT  = 1
  • toute requête de sélection ou retour de fonction renvoient un @@ROWCOUNT  = nombre de lignes affectées
  • EXECUTE permet de conserver la valeur antérieure de @@ROWCOUNT
  • Les débuts et commit de transaction réinitialisent notre @@ROWCOUNT à 0

Enfin notons que l'instruction SET ROWCOUNT int permet de définir le nombre de lignes maximum traitées par une requête. Dès que int est atteint, le moteur arrête de traiter le reste de la requête (incluant triggers et les types de curseurs KEYSET et INSENSITIVE).

Pour terminer avec ce ROWCOUNT, notons également le ROWCOUNT_BIG() qui renvoie un BIGINT au lieu d'un INT pour les valeurs > 2 milliards

Publié samedi 5 avril 2008 11:31 par guldan
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

# re: @@ROWCOUNT - 2eme Partie @ lundi 7 avril 2008 10:45

>>> Enfin notons que l'instruction SET ROWCOUNT int permet de définir le nombre de lignes maximum traitées par une requête. Dès que int est atteint, le moteur arrête de traiter le reste de la requête (incluant triggers et les types de curseurs KEYSET et INSENSITIVE). <<<

Petite remarque, dans le cas d'une requête incluant un tri sur une colonne non indexée, le plan d'exécution montre que l'intégralité du jeu de données est traité, et ensuite seulement les premières lignes sont renvoyées (ce qui est logique). Faites donc bien attention à ça si vous utilisez ROWCOUNT à des fins d'optimisation ;)

KooKiz


Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01