sp_cursor_list (Transact-SQL)
Indique les attributs des curseurs de serveur actuellement ouverts pour la connexion.
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 de type cursor, 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 de type int, sans valeur par défaut, et peut prendre l'une des valeurs suivantes.Valeur
Description
1
Signaler tous les curseurs locaux.
2
Signaler tous les curseurs globaux.
3
Signaler les curseurs locaux et globaux.
Valeurs des codes renvoyés
Aucune
Curseurs renvoyés
sp_cursor_list renvoie son rapport sous la forme d'un paramètre de résultat de curseur Transact-SQL et non pas sous la forme d'un ensemble de résultats. Ceci permet aux traitementsTransact-SQL, aux procédures stockées et aux déclencheurs de travailler sur une seule ligne de résultat à 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 résultat 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 colonne |
Type de données |
Description |
---|---|---|
reference_name |
sysname |
Nom utilisé pour désigner le 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 curseur pour un curseur, cursor_name retourne le nom de la variable curseur. Dans les versions précédentes, la colonne de sortie renvoie 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 = Contrôlé par clés 3 = Dynamique 4 = Avance rapide |
concurrency |
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. |
Notes
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 la description des attributs du jeu de résultats retourné par le curseur. Utilisez sp_describe_cursor_tables pour obtenir un rapport sur les tables de base référencées par le curseur. sp_describe_cursor rapporte les mêmes informations que sp_cursor_list, mais seulement pour un curseur spécifié.
Autorisations
Les autorisations d'exécution sont attribuées par défaut au rôle public.
Exemple
Cet exemple ouvre un curseur global et utilise sp_cursor_list pour fournir un rapport sur les attributs du curseur.
USE AdventureWorks2008R2;
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