sp_describe_cursor_columns (Transact-SQL)

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

Icône Lien de rubrique Conventions de la syntaxe de 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 de type cursor, 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 de type 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 de type nvarchar(128).

  • [ @cursor\_identity= ] N'global_cursor_name'
    Nom d'un curseur créé par une instruction DECLARE CURSOR contenant soit le mot clé GLOBAL, soit celui défini par défaut pour GLOBAL. global_cursor_name est de type nvarchar(128).

    global_cursor_name peut aussi être le nom d'un curseur côté 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 de type nvarchar(128).

Valeurs des codes de retour

Aucune

Curseurs retournés

sp_describe_cursor_columns encapsule son rapport sous la forme d'un paramètre de sortie Transact-SQL cursor. Cela permet aux lots, procédures stockées et déclencheurs Transact-SQL de travailler sur une seule ligne de sortie à 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 sortie cursor 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 cursor de liaison.

Le tableau suivant indique le format du curseur qui est retourné à l'aide de sp_describe_cursor_columns.

Nom de la colonne

Type de données

Description

column_name

sysname (accepte les valeurs NULL)

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

Numéro indiquant le type de données SQL Server de la colonne.

column_precision

tinyint

Précision maximale de la colonne telle que définie par la valeur bPrecision dans OLE DB.

column_scale

tinyint

Nombre de chiffres à droite du séparateur décimal pour les types de données numeric ou decimal tel que défini par 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) (accepte les valeurs NULL)

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 du jeu 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 du jeu 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 du jeu 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 du jeu de résultats a été créée à partir d'une expression, dbname a la valeur NULL.

Notes

sp_describe_cursor_columns décrit les attributs des colonnes du jeu de résultats d'un curseur côté 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 côté 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 des curseurs côté serveur Transact-SQL qui sont visibles sur 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 AdventureWorks2012;
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

Référence

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)

Concepts

Curseurs