sp_cursor_list (Transact-SQL)

S'applique à : SQL Server

Indique les attributs des curseurs côté serveur actuellement ouverts pour la connexion.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_cursor_list
    [ @cursor_return = ] cursor_return OUTPUT
    , [ @cursor_scope = ] cursor_scope
[ ; ]

Arguments

[ @cursor_return = ] sortie de cursor_return

Nom d’une variable de curseur déclarée. @cursor_return est un paramètre OUTPUT de type CURSOR. Le curseur renvoyé est un curseur en lecture seule, dynamique et permettant les défilements.

[ @cursor_scope = ] cursor_scope

Spécifie le niveau des curseurs à signaler. @cursor_scope est int, sans valeur par défaut, et peut être l’une de ces valeurs.

Valeur Description
1 Signaler tous les curseurs locaux.
2 Signaler tous les curseurs globaux.
3 Signaler les curseurs locaux et globaux.

Valeurs des codes de retour

Aucune.

Curseurs retournés

sp_cursor_list retourne son rapport en tant que paramètre de sortie de curseur Transact-SQL, et non en tant que jeu de résultats. Cela permet aux lots Transact-SQL, aux procédures stockées et aux déclencheurs d’utiliser la sortie d’une ligne à la fois. Cela signifie également que la procédure ne peut pas être appelée directement à partir des fonctions d’API de base de données. Le paramètre de sortie du curseur doit être lié à une variable de programme, mais les API de base de données ne prennent pas en charge les paramètres de curseur de liaison ou les variables.

Il s’agit du format du curseur retourné par sp_cursor_list. Le format du curseur est identique au format retourné par sp_describe_cursor.

Nom de la colonne Type de données Description
reference_name sysname Nom utilisé pour faire référence au curseur. Si la référence au curseur était via le nom donné sur une DECLARE CURSOR instruction, le nom de référence est identique au nom du curseur. Si la référence au curseur était faite via une variable, le nom de référence est le même que le nom de la variable de curseur.
cursor_name sysname Nom du curseur à partir d’une DECLARE CURSOR instruction. Dans SQL Server, si le curseur a été créé en définissant une variable de curseur sur un curseur, cursor_name retourne le nom de la variable de curseur. Dans les versions précédentes, cette colonne de sortie retourne un nom généré par le système.
cursor_scope smallint 1 = LOCAL
2 = GLOBAL
status smallint Les mêmes valeurs que celles signalées par la CURSOR_STATUS fonction système :

1 = Le curseur référencé par le nom ou la variable du curseur est ouvert. Si le curseur n’est pas sensible, statique ou keyset, il s’agit d’au moins une ligne. Si le curseur est dynamique, l'ensemble de résultats comporte zéro ou plusieurs lignes.

0 = Le curseur référencé par le nom ou la variable du curseur est ouvert, mais n’a pas de lignes. Les curseurs dynamiques ne renvoient jamais cette valeur.

-1 = Le curseur référencé par le nom ou la variable du curseur est fermé.

-2 = S’applique uniquement aux variables de curseur. Aucun curseur n’est affecté à la variable. Éventuellement, un OUTPUT paramètre a affecté un curseur à la variable, mais la procédure stockée a fermé le curseur avant de retourner.

-3 = Un curseur ou une variable de curseur portant le nom spécifié n’existe pas, ou la variable de curseur n’a pas de curseur alloué à celui-ci.
model smallint 1 = Insensible (ou statique)
2 = Jeu de clés
3 = Dynamique
4= Avance rapide
concurrency smallint 1 = Lecture seule
2 = Verrous de défilement
3 = Optimiste
scrollable smallint 0 = Transfert uniquement
1 = Défilement
open_status smallint 0 = Fermé
1 = Ouvrir
cursor_rows int Nombre de lignes éligibles dans l'ensemble de résultats. Pour plus d’informations, consultez @@CURSOR_ROWS.
fetch_status smallint État de la dernière opération d'extraction sur ce curseur. Pour plus d’informations, consultez @@FETCH_STATUS :

0 = Récupération réussie.
-1 = L’extraction a échoué ou dépasse les limites du curseur.
-2 = La ligne demandée est manquante.
-9 = Aucune extraction n’a été effectuée sur le curseur.
column_count smallint Nombre de colonnes dans l'ensemble de résultats du curseur.
row_count smallint Nombre de lignes affectées par la dernière opération sur le curseur. Pour plus d’informations, consultez @@ROWCOUNT.
last_operation smallint Dernière opération effectuée sur le curseur :

0 = Aucune opération n’a été effectuée sur le curseur.
1 = OPEN
2 = FETCH
3 = INSERT
4 = UPDATE
5 = DELETE
6 = CLOSE
7 = DEALLOCATE
cursor_handle int Valeur unique identifiant le curseur dans l'étendue du serveur.

Notes

sp_cursor_list produit une liste des curseurs de serveur actuels ouverts par la connexion et décrit les attributs globaux pour chaque curseur, tels que la défilement et la mise à jour du curseur. Les curseurs répertoriés par sp_cursor_list les éléments suivants sont les suivants :

  • Curseurs de serveur Transact-SQL.

  • Curseurs du serveur d’API ouverts par une application ODBC qui est ensuite appelée SQLSetCursorName pour nommer le curseur.

Pour sp_describe_cursor_columns obtenir une description des attributs du jeu de résultats retourné par le curseur. Permet sp_describe_cursor_tables d’utiliser un rapport des tables de base référencées par le curseur. sp_describe_cursor signale les mêmes informations que sp_cursor_list, mais uniquement pour un curseur spécifié.

autorisations

Les autorisations d'exécution reviennent par défaut au rôle public .

Exemples

Cet exemple ouvre un curseur global et utilise sp_cursor_list pour fournir un rapport sur les attributs du curseur.

USE AdventureWorks2022;
GO

-- Declare and open a keyset-driven cursor.
DECLARE abc CURSOR KEYSET
FOR
SELECT LastName
FROM Person.Person
WHERE LastName LIKE 'S%';

OPEN abc;

-- Declare a cursor variable to hold the cursor output variable
-- from sp_cursor_list.
DECLARE @Report CURSOR;

-- Execute sp_cursor_list into the cursor variable.
EXEC master.dbo.sp_cursor_list
    @cursor_return = @Report OUTPUT,
    @cursor_scope = 2;

-- Fetch all the rows from the sp_cursor_list output cursor.
FETCH NEXT from @Report;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
    FETCH NEXT from @Report;
END

-- Close and deallocate the cursor from sp_cursor_list.
CLOSE @Report;
DEALLOCATE @Report;
GO

-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO