sp_describe_cursor_columns (Transact-SQL)

S’applique à :SQL Server

Fournit un rapport des attributs des colonnes contenues dans le jeu de résultats d'un curseur côté serveur.

Conventions de la syntaxe Transact-SQL

Syntaxe

  
sp_describe_cursor_columns   
   [ @cursor_return = ] output_cursor_variable OUTPUT   
    { [ , [ @cursor_source = ] N'local' ,   
          [ @cursor_identity = ] N'local_cursor_name' ]   
    | [ , [ @cursor_source = ] N'global' ,   
          [ @cursor_identity = ] N'global_cursor_name' ]   
    | [ , [ @cursor_source = ] N'variable' ,   
          [ @cursor_identity = ] N'input_cursor_variable' ]   
   }  

Arguments

[ @cursor_return= ] output_cursor_variable OUTPUT
Nom d'une variable de curseur déclarée devant recevoir la sortie du curseur. output_cursor_variable est un curseur, sans valeur par défaut, et ne doit pas être associé à des curseurs au moment où sp_describe_cursor_columns est appelé. Le curseur retourné est un curseur en lecture seule, dynamique et permettant les défilements.

[ @cursor_source= ] { N’local' | N’global' | N’variable' }
Indique si le curseur qui fait l'objet du rapport est défini en utilisant le nom d'un curseur local, d'un curseur global ou d'une variable de curseur. Le paramètre est nvarchar(30).

[ @cursor_identity= ] N’local_cursor_name'
Nom d'un curseur créé par une instruction DECLARE CURSOR contenant soit le mot clé LOCAL, soit celui défini par défaut pour LOCAL. local_cursor_name est nvarchar(128).

[ @cursor_identity= ] N’global_cursor_name'
Nom d’un curseur créé par une instruction DECLARE CURSOR qui a le mot clé GLOBAL ou dont la valeur par défaut est GLOBAL. global_cursor_name est nvarchar(128).

global_cursor_name peut également être le nom d’un curseur de serveur d’API ouvert par une application ODBC, puis nommé en appelant SQLSetCursorName.

[ @cursor_identity= ] N’input_cursor_variable'
Nom d'une variable de curseur associée à un curseur ouvert. input_cursor_variable est nvarchar(128).

Codet de retour

None

Curseurs retournés

sp_describe_cursor_columns encapsule son rapport en tant que paramètre de sortie de curseur Transact-SQL. Cela permet aux lots, aux procédures stockées et aux déclencheurs Transact-SQL de fonctionner avec la sortie 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 variables ou paramètres de curseur de liaison.

Vous trouverez dans le tableau suivant une présentation du format de curseur renvoyé par sp_describe_cursor_columns.

Nom de la colonne Type de données Description
column_name sysname (nullable) Nom attribué à la colonne du jeu de résultats. La colonne est NULL si elle a été spécifiée sans être accompagnée de la clause AS.
ordinal_position int Position relative de la colonne par rapport à la colonne la plus à gauche du jeu de résultats. La première colonne est à la position 0.
column_characteristics_flags int Masque de bits indiquant les informations stockées dans DBCOLUMNFLAGS dans OLE DB. Il peut s'agir d'un des éléments suivants ou d'une combinaison de ceux-ci :

1 = Signet

2 = Longueur fixe

4 = Pouvant être Null

8 = Contrôle de version de ligne

16 = Colonne pouvant être mise à jour (définie dans le cas de colonnes projetées d'un curseur n'ayant pas de clause FOR UPDATE. Si une colonne de ce type existe, il ne peut y en avoir qu'une par curseur).

Lorsque les valeurs binaires sont combinées, les caractéristiques des valeurs binaires combinées s'appliquent. Par exemple, si la valeur binaire est égale à 6, la colonne est de longueur fixe (2) et accepte les valeurs NULL (4).
column_size int Taille maximale possible d'une valeur de cette colonne.
data_type_sql smallint Nombre qui indique le type de données SQL Server de la colonne.
column_precision tinyint Précision maximale de la colonne conformément à la valeur bPrecision dans OLE DB.
column_scale tinyint Nombre de chiffres à droite de la virgule décimale pour les types de données numériques ou décimaux conformément à la valeur bScale dans OLE DB.
order_position int Position de la colonne dans la clé d'ordre relative à la colonne la plus à gauche si la colonne prend part à la définition de l'ordre du jeu de résultats.
order_direction varchar(1)(nullable) A = La colonne fait partie de la clé d'ordre et l'ordre est croissant.

D = La colonne fait partie de la clé d'ordre et l'ordre est décroissant.

NULL = La colonne ne fait pas partie de la clé d'ordre.
hidden_column smallint 0 = Cette colonne apparaît dans la liste de sélection.

1 = Réservé pour un usage ultérieur.
columnid int Identification de la colonne de base. Si la colonne de l'ensemble de résultats a été créée à partir d'une expression, columnid est égal à -1.
objectid int ID d'objet de l'objet ou de la table de base qui fournit la colonne. Si la colonne de l'ensemble de résultats a été créée à partir d'une expression, objectid est égal à -1.
dbid int ID de la base de données contenant la table de base qui fournit la colonne. Si la colonne de l'ensemble de résultats a été créée à partir d'une expression, dbid est égal à -1.
dbname sysname

(accepte les valeurs NULL)
Nom de la base de données contenant la table de base qui fournit la colonne. Si la colonne de l'ensemble de résultats a été créée à partir d'une expression, dbname a la valeur NULL.

Remarques

La procédure sp_describe_cursor_columns décrit les attributs des colonnes de l'ensemble de résultats d'un curseur de serveur, tels que le nom et le type de données de chaque curseur. Utilisez sp_describe_cursor pour obtenir une description des attributs globaux du curseur de serveur. Utilisez sp_describe_cursor_tables pour générer un rapport sur les tables de base référencées par le curseur. Utilisez sp_cursor_list pour obtenir un rapport sur les curseurs de serveur Transact-SQL visibles lors de la connexion.

Autorisations

Nécessite l'appartenance au rôle public.

Exemples

L'exemple suivant ouvre un curseur global et utilise sp_describe_cursor_columns pour fournir un rapport sur colonnes utilisées dans le curseur.

USE AdventureWorks2022;  
GO  
-- Declare and open a global cursor.  
DECLARE abc CURSOR KEYSET FOR  
SELECT LastName  
FROM Person.Person;  
GO  
OPEN abc;  
  
-- Declare a cursor variable to hold the cursor output variable  
-- from sp_describe_cursor_columns.  
DECLARE @Report CURSOR;  
  
-- Execute sp_describe_cursor_columns into the cursor variable.  
EXEC master.dbo.sp_describe_cursor_columns  
    @cursor_return = @Report OUTPUT  
    ,@cursor_source = N'global'   
    ,@cursor_identity = N'abc';  
  
-- Fetch all the rows from the sp_describe_cursor_columns 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_columns.  
CLOSE @Report;  
DEALLOCATE @Report;  
GO  
-- Close and deallocate the original cursor.  
CLOSE abc;  
DEALLOCATE abc;  
GO  

Voir aussi

Curseurs
CURSOR_STATUS (Transact-SQL)
DECLARE CURSOR (Transact-SQL)
sp_describe_cursor (Transact-SQL)
sp_cursor_list (Transact-SQL)
sp_describe_cursor_tables (Transact-SQL)
Procédures stockées système (Transact-SQL)