@@CURSOR_ROWS (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Cette fonction 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ée pour déterminer que le nombre de lignes éligibles pour un curseur sont extraites au moment de l’appel @@CURSOR_ROWS.

Conventions de la syntaxe Transact-SQL

Syntaxe

@@CURSOR_ROWS  

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Types de retour

integer

Valeur de retour

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 éligibles.
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

@@CURSOR_ROWS retourne un nombre négatif si le dernier curseur s’est ouvert de façon asynchrone. Les curseurs de jeu de clés ou les curseurs statiques s’ouvrent de façon asynchrone si la valeur du seuil de curseur sp_configure est supérieure à 0 et si le nombre de lignes contenues dans le jeu de résultats du curseur est supérieur au 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
---------------
Sanchez
-----------
-1

Voir aussi

Fonctions de curseur (Transact-SQL)
OPEN (Transact-SQL)