Partage via


@@CURSOR_ROWS (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance

Cette fonction retourne le nombre de lignes éligibles 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 est récupéré au moment de l’appel @@CURSOR_ROWS .

Conventions de la syntaxe Transact-SQL

Syntaxe

@@CURSOR_ROWS

Types de retour

int

Valeur retournée

Valeur retournée Description
-m Le curseur se remplit 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. Sachant que les curseurs dynamiques reflètent toutes les modifications, le nombre de lignes éligibles pour le curseur varie constamment. Le curseur ne récupère pas nécessairement toutes les lignes qualifiées.
0 Aucun curseur n’est ouvert, aucune ligne n’est 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

@@CURSOR_ROWS retourne un nombre négatif si le dernier curseur s’est ouvert de façon asynchrone. Les curseurs keyset-driver ou statiques s’ouvrent de manière asynchrone si la valeur du sp_configure seuil de curseur dépasse 0, et si le nombre de lignes du jeu de résultats du curseur dépasse le seuil du curseur.

Exemples

Cet exemple déclare d’abord un curseur et utilise ensuite SELECT pour afficher la valeur de @@CURSOR_ROWS. Le paramètre a pour valeur 0 avant l’ouverture du curseur et prend ensuite la valeur -1 pour indiquer que le jeu de clés du curseur est rempli de façon asynchrone.

USE AdventureWorks2022;
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   (No column name)   ROWSTAT
---------  -----------------  ---------
Sánchez    -1                 NULL

-----------
-1