@@CURSOR_ROWS (Transact-SQL)

Retourne le nombre de lignes éligibles se trouvant actuellement dans le dernier curseur ouvert sur la connexion. Afin d'améliorer les performances, SQL Server peut charger de grands curseurs pilotés par jeux de clés et curseurs statiques de manière asynchrone. @@CURSOR_ROWS peut être appelé pour déterminer que le nombre de lignes éligibles pour un curseur sont extraites au moment de l'appel de @@CURSOR_ROWS.

Icône Lien de rubriqueConventions de la syntaxe Transact-SQL

Syntaxe

@@CURSOR_ROWS

Types de retour

integer

Valeur de retour

Valeur de retour

Description

-m

Le curseur est rempli de façon asynchrone. La valeur retournée (-m) correspond au nombre de lignes figurant actuellement dans le jeu de clés.

-1

Le curseur est dynamique. Puisque les curseurs dynamiques reflètent toutes les modifications, le nombre de lignes qui se qualifient pour le curseur varie constamment. On ne peut jamais affirmer définitivement que toutes les lignes qualifiées ont été extraites.

0

Aucun curseur n'a été ouvert, aucune ligne n'a été qualifiée pour le dernier curseur ouvert ou le dernier curseur ouvert est fermé ou désalloué.

n

Le curseur est totalement rempli. La valeur retournée (n) correspond au nombre total de lignes du curseur.

Notes

Le nombre retourné par @@CURSOR_ROWS est négatif si le dernier curseur a été ouvert de façon asynchrone. Les curseurs pilotés par jeux de clés ou les curseurs statiques sont ouverts de façon asynchrone si la valeur du seuil du curseur de sp_configure est supérieure à 0 et si le nombre de lignes du jeu de résultats du curseur est supérieur au seuil du curseur.

Exemples

L'exemple suivant déclare un curseur et utilise SELECT pour afficher la valeur de @@CURSOR_ROWS. La valeur du paramètre est 0 avant l'ouverture du curseur, et -1 pour indiquer que le jeu de clés du curseur est rempli de façon asynchrone.

USE AdventureWorks2008R2;
GO
SELECT @@CURSOR_ROWS;
DECLARE Name_Cursor CURSOR FOR
SELECT LastName ,@@CURSOR_ROWS FROM Person.Person;
OPEN Name_Cursor;
FETCH NEXT FROM Name_Cursor;
SELECT @@CURSOR_ROWS;
CLOSE Name_Cursor;
DEALLOCATE Name_Cursor;
GO           

Voici les jeux de résultats obtenus.

-----------

0

LastName

---------------

Sanchez

-----------

-1