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éfini LOCALpar défaut, @cursor_identity est local.

  • Si le curseur a le GLOBAL mot clé ou est défini GLOBALpar défaut, @cursor_identity est global. @cursor_identity peut également être le nom d’un curseur de serveur d’API ouvert par une application ODBC, puis nommé en appelant SQLSetCursorName.

  • 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_cursorde . Le format du curseur est identique au format retourné à l’aide sp_cursor_listde .

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és
3 = Dynamique
4= Avance rapide
concurrency tinyint 1 = Lecture seule
2 = Verrous de défilement
3 = Optimiste
scrollable tinyint 0 = Transfert uniquement
1 = 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