Partage via


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 = ] 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_columns 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_columns encapsule son rapport en tant que 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_columnsde .

Nom de la colonne Type de données Description
column_name sysname Nom attribué à la colonne du jeu de résultats. La colonne est NULL si la colonne a été spécifiée sans clause associée AS .

Autorise la valeur Null.
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 en position 0.
column_characteristics_flags int Masque de bits qui indique les informations stockées dans DBCOLUMNFLAGS OLE DB. Il peut s’agir d’une ou d’une combinaison des valeurs suivantes :

1 = Signet
2 = Longueur fixe
4 = Nullable
8 = Contrôle de version des lignes
16 = Colonne pouvant être mise à jour (définie pour les colonnes projetées d’un curseur qui n’est pas FOR UPDATE clause et, s’il existe une telle colonne, ne peut être qu’une seule par curseur).

Lorsque les valeurs binaires sont combinées, les caractéristiques des valeurs binaires combinées s'appliquent. Par exemple, si la valeur du bit est 6, la colonne est une colonne de longueur fixe (2), nullable (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 en fonction de la bPrecision valeur 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 en fonction de la bScale valeur 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) A = La colonne se trouve dans la clé d’ordre et l’ordre est croissant.
D = La colonne se trouve dans la clé d’ordre et l’ordre décroissant.

NULL = La colonne ne participe pas à l’ordre.

Autorise la valeur Null.
hidden_column smallint 0 = cette colonne apparaît dans la liste de sélection.

1 = Réservé pour une utilisation ultérieure.
columnid int Identification de la colonne de base. Si la colonne du jeu de résultats a été générée à partir d’une expression, columnid est -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é générée à partir d’une expression, objectid est -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é générée à partir d’une expression, dbid est -1.
dbname sysname 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é générée à partir d’une expression, dbname est NULL.

Autorise la valeur Null.

Notes

sp_describe_cursor_columns décrit les attributs des colonnes dans le jeu de résultats d’un curseur serveur, comme le nom et le type de données de chaque curseur. Permet sp_describe_cursor de décrire les attributs globaux du curseur du serveur. 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.

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