sp_describe_cursor_columns (Transact-SQL)
Fournit un rapport des attributs des colonnes contenues dans l'ensemble de résultats d'un curseur de serveur.
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. L'argument output_cursor_variable est de type cursor, il n'a pas de valeur par défaut et ne doit pas être associé à des curseurs au moment où la procédure sp_describe_cursor_columns est appelée. Le curseur renvoyé est un curseur en lecture seule, dynamique et permettant les défilements.[ @cursor_source = ] { N'local' | N'global' | N'variable' }
Précise si le curseur objet du rapport est défini avec 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 renvoyés
Aucune
Curseurs renvoyés
La procédure sp_describe_cursor_columns encapsule son rapport sous la forme d'un paramètre de sortie Transact-SQLcursor. Ceci permet aux traitements Transact-SQL, aux procédures stockées et aux déclencheurs de travailler sur une seule ligne de résultat à 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.
Vous trouverez dans le tableau suivant une présentation du format de curseur renvoyé par sp_describe_cursor_columns.
Nom de colonne |
Type de données |
Description |
---|---|---|
column_name |
sysname (accepte les valeurs NULL) |
Nom attribué à la colonne de l'ensemble 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 de l'ensemble 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 = 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 de l'ensemble 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 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. |
Notes
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. Pour obtenir un rapport sur les curseurs de serveur Transact-SQL visibles pour la connexion, utilisez sp_cursor_list.
Autorisations
Nécessite d'être membre du rôle public.
Exemple
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 AdventureWorks2008R2;
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