sp_describe_cursor (Transact-SQL)
S'applique à : SQL Server
Indique les attributs d'un curseur côté serveur.
Conventions de la syntaxe Transact-SQL
Syntaxe
sp_describe_cursor
[ @cursor_return = ] cursor_return OUTPUT
, [ @cursor_source = ] { N'local' | N'global' | N'*cursor_source*' }
, [ @cursor_identity = ] N'cursor_identity'
[ ; ]
Arguments
[ @cursor_return = ] sortie de cursor_return
Nom d’une variable de curseur déclarée à recevoir la sortie du curseur. @cursor_return est un paramètre OUTPUT de type int, sans valeur par défaut, et ne doit pas être associé à des curseurs au moment sp_describe_cursor
de l’appel. Le curseur retourné est un curseur en lecture seule, dynamique et permettant les défilements.
[ @cursor_source = ] { N’local' | N’global' | N’cursor_source' }
Spécifie si le curseur signalé est spécifié à l’aide du nom d’un curseur local , d’un curseur global ou d’une variable de curseur. @cursor_source est nvarchar(30), sans valeur par défaut.
[ @cursor_identity = ] N’cursor_identity'
Nom d’un curseur créé par une DECLARE CURSOR
instruction. @cursor_identity est nvarchar(128), sans valeur par défaut.
Si le curseur a le
LOCAL
mot clé ou est définiLOCAL
par défaut, @cursor_identity estlocal
.Si le curseur a le
GLOBAL
mot clé ou est définiGLOBAL
par défaut, @cursor_identity estglobal
. @cursor_identity peut également être le nom d’un curseur de serveur d’API ouvert par une application ODBC, puis nommé en appelantSQLSetCursorName
.Sinon, @cursor_identity est le nom d’une variable de curseur associée à un curseur ouvert.
Valeurs des codes de retour
Aucune.
Curseurs retournés
sp_describe_cursor
encapsule son jeu de résultats dans un paramètre de sortie Transact-SQL cursor
. 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 cursor
paramètre de sortie doit être lié à une variable de programme, mais les API de base de données ne prennent pas en charge les paramètres de liaison cursor
ou les variables.
Le tableau suivant montre le format du curseur retourné à l’aide sp_describe_cursor
de . Le format du curseur est identique au format retourné à l’aide sp_cursor_list
de .
Nom de la colonne | Type de données | Description |
---|---|---|
reference_name |
sysname | Nom utilisé pour désigner le curseur. Si la référence au curseur était via le nom spécifié sur une DECLARE CURSOR instruction, le nom de référence est identique au nom du curseur. Si la référence du curseur provient d'une variable, le nom de référence est celui de la variable. |
cursor_name |
sysname | Nom du curseur à partir d’une DECLARE CURSOR instruction. 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 antérieures de SQL Server, cette colonne de sortie retourne un nom généré par le système. |
cursor_scope |
tinyint | 1 = LOCAL 2 = GLOBAL |
status |
int | 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 |
tinyint | 1 = Insensible (ou statique)2 = Jeu de clés3 = Dynamique4 = Avance rapide |
concurrency |
tinyint | 1 = Lecture seule2 = Verrous de défilement3 = Optimiste |
scrollable |
tinyint | 0 = Transfert uniquement1 = Défilement |
open_status |
tinyint | 0 = Fermé1 = Ouvrir |
cursor_rows |
décimal(10,0) | Nombre de lignes correspondantes dans le jeu de résultats. Pour plus d’informations, consultez @@CURSOR_ROWS. |
fetch_status |
smallint | État de la dernière 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 eu lieu sur le curseur. |
column_count |
smallint | Nombre de colonnes dans le jeu de résultats du curseur |
row_count |
décimal(10,0) | Nombre de lignes affectées par la dernière opération sur le curseur. Pour plus d’informations, consultez @@ROWCOUNT. |
last_operation |
tinyint | 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 pour le curseur dans l'étendue du serveur. |
Notes
sp_describe_cursor
décrit les attributs globaux à un curseur de serveur, tels que la possibilité de faire défiler et de mettre à jour. 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. Pour obtenir un rapport des curseurs de serveur Transact-SQL visibles sur la connexion, utilisez sp_cursor_list
.
Une DECLARE CURSOR
instruction peut demander un type de curseur que SQL Server ne peut pas prendre en charge à l’aide de l’instruction SELECT
contenue dans le DECLARE CURSOR
. SQL Server convertit implicitement le curseur en un type qu’il peut prendre en charge à l’aide de l’instruction SELECT
. Si TYPE_WARNING
elle est spécifiée dans l’instruction, SQL Server envoie à l’application DECLARE CURSOR
un message d’information indiquant qu’une conversion a été effectuée. sp_describe_cursor
peut ensuite être appelé pour déterminer le type de curseur implémenté.
autorisations
Nécessite l'appartenance au rôle public .
Exemples
Cet exemple ouvre un curseur global et utilise sp_describe_cursor
pour fournir un rapport sur les attributs du curseur.
USE AdventureWorks2022;
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR STATIC FOR
SELECT LastName
FROM Person.Person;
OPEN abc;
-- Declare a cursor variable to hold the cursor output variable
-- from sp_describe_cursor.
DECLARE @Report CURSOR;
-- Execute sp_describe_cursor into the cursor variable.
EXEC master.dbo.sp_describe_cursor
@cursor_return = @Report OUTPUT,
@cursor_source = N'global',
@cursor_identity = N'abc';
-- Fetch all the rows from the sp_describe_cursor output cursor.
FETCH NEXT from @Report;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
FETCH NEXT from @Report;
END
-- Close and deallocate the cursor from sp_describe_cursor.
CLOSE @Report;
DEALLOCATE @Report;
GO
-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO