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és3 = Dynamique4 = Avance rapide |
concurrency |
smallint | 1 = Lecture seule2 = Verrous de défilement3 = Optimiste |
scrollable |
smallint | 0 = Transfert uniquement1 = 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