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_variable_name OUTPUT   
     , [ @cursor_scope = ] cursor_scope  
[;]  

Arguments

[ @cursor_return= ] cursor_variable_nameOUTPUT
Nom d'une variable de curseur déclarée. cursor_variable_name est un curseur, sans valeur par défaut. 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.

Codet de retour

None

Curseurs retournés

sp_cursor_list retourne son rapport en tant que paramètre de sortie de curseur Transact-SQL, pas 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 une ligne à la fois. Cela signifie aussi 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 de curseur doit être lié à une variable de programme, mais les API de base de données ne prennent pas en charge les paramètres ou les variables de curseur de liaison.

Ceci est le format du curseur renvoyé par sp_cursor_list. Le format du curseur est identique à celui qui est renvoyé 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 faite via le nom donné dans une instruction DECLARE CURSOR, le nom de référence est le même que le 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 dans une instruction DECLARE CURSOR. 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 Valeurs identiques à celles indiquées par la fonction système CURSOR_STATUS :

1 = Le curseur référencé par le nom de curseur ou la variable est ouvert. Si le curseur est non sensitif, statique ou contrôlé par clés, il comporte 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 de curseur ou la variable est ouvert mais ne comporte pas de lignes. Les curseurs dynamiques ne renvoient jamais cette valeur.

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

-2 = S'applique uniquement aux variables de curseur. Aucun curseur n'est affecté à la variable. Il se peut qu'un paramètre OUTPUT ait affecté un curseur à la variable, mais la procédure stockée a fermé le curseur avant de sortir.

-3 = Aucun curseur ou variable de curseur portant le nom spécifié n'existe, ou aucun curseur n'a été alloué à la variable de curseur.
model smallint 1 = Non sensitif (ou statique)

2 = Jeu de clés

3 = Dynamique

4 = Avance rapide
accès concurrentiel smallint 1 = Lecture seule

2 = Verrous de défilement

3 = Optimiste
scrollable smallint 0 = Avant uniquement

1 = À défilement
open_status smallint 0 = Fermé

1 = Ouvert
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 = Opération d'extraction réussie.

-1 = L'opération d'extraction a échoué ou est hors des limites du curseur.

-2 = La ligne demandée est manquante.

-9 = Il n'y a pas eu d'opération d'extraction 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.

Remarques

sp_cursor_list génère la liste des curseurs de serveur actifs ouverts par la connexion et décrit les attributs globaux de chaque curseur, notamment la possibilité de les faire défiler et de les mettre à jour. Les curseurs répertoriés par sp_cursor_list sont les suivants :

  • Curseurs de serveur Transact-SQL.

  • curseurs de serveur API ouverts par une application ODBC qui appelle ensuite SQLSetCursorName pour nommer le curseur.

Utilisez sp_describe_cursor_columns pour obtenir une description des attributs de l'ensemble de résultats renvoyé par le curseur. Utilisez sp_describe_cursor_tables pour générer un rapport sur les 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 sont attribuées 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  

Voir aussi

Procédures stockées système (Transact-SQL)