sp_describe_cursor_tables (Transact-SQL)
S'applique à : SQL Server
Indique les objets ou tables de base référencés par un curseur côté serveur.
Conventions de la syntaxe Transact-SQL
Syntaxe
sp_describe_cursor_tables
[ @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 curseur OUTPUT, sans valeur par défaut, et ne doit pas être associé à des curseurs au moment sp_describe_cursor_tables
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' }
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. @cursor_source est nvarchar(30), sans valeur par défaut.
[ @cursor_identity = ] N’cursor_identity'
Lorsque @cursor_source est , @cursor_identity est le nom d’un curseur créé par une DECLARE CURSOR
instruction ayant le LOCAL
mot clé, ou qui a la LOCAL
valeur par défaut . local
Lorsque @cursor_source est , @cursor_identity est le nom d’un curseur créé par une DECLARE CURSOR
instruction ayant le GLOBAL
mot clé, ou qui a la GLOBAL
valeur par défaut . global
@cursor_identity peut également être le nom d’un curseur de serveur d’API ouvert par une application ODBC qui a ensuite nommé le curseur en appelant SQLSetCursorName
.
Lorsque @cursor_source est variable
, @cursor_identity est le nom d’une variable de curseur associée à un curseur ouvert.
@cursor_identity est nvarchar(128), sans valeur par défaut.
Valeurs des codes de retour
Aucune.
Curseurs retournés
sp_describe_cursor_tables
encapsule son rapport en tant que paramètre de sortie de curseur Transact-SQL. 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. Le paramètre de sortie du curseur doit être lié à une variable de programme, mais les API ne prennent pas en charge les paramètres de curseur de liaison ou les variables.
Le tableau suivant montre le format du curseur retourné par sp_describe_cursor_tables
.
Nom de la colonne | Type de données | Description |
---|---|---|
table_owner |
sysname | ID d'utilisateur du propriétaire de table. |
table_name |
sysname | Nom de l'objet ou de la table de base. Dans SQL Server, les curseurs serveur retournent toujours l’objet spécifié par l’utilisateur, et non les tables de base. |
optimizer_hint |
smallint | Bitmap composée d’une ou plusieurs des options suivantes : 1 = Verrouillage au niveau des lignes ( ROWLOCK )4 = Verrouillage au niveau de la page ( PAGELOCK )8 = Verrou de table ( TABLOCK )16 = Verrou de table exclusif ( TABLOCKX )32 = Verrouillage de mise à jour ( UPDLOCK )64 = Aucun verrou ( NOLOCK )128 = Option de première ligne rapide ( FASTFIRST )4096 = Sémantique reproductible en lecture lorsqu’elle est utilisée avec DECLARE CURSOR (HOLDLOCK )Si vous fournissez plusieurs options, le système utilise les plus restrictives. Toutefois, sp_describe_cursor_tables affiche les indicateurs spécifiés dans la requête. |
lock_type |
smallint | Type de verrou de défilement demandé soit explicitement, soit implicitement pour chaque table de base sous-jacente de ce curseur. La valeur peut être l’une des options suivantes : 0 = Aucun(e) 1 = Partagé 3 = Mettre à jour |
server_name |
sysname, nullable | Nom du serveur lié sur lequel réside la table. NULL quand OPENQUERY ou OPENROWSET sont utilisés. |
objectid |
int | ID d’objet de la table. 0 quand OPENQUERY ou OPENROWSET sont utilisés. |
dbid |
int | ID de la base de données dans laquelle réside la table. 0 quand OPENQUERY ou OPENROWSET sont utilisés. |
dbname |
sysname, nullable | Nom de la base de données dans laquelle réside la table. NULL quand OPENQUERY ou OPENROWSET sont utilisés. |
Notes
sp_describe_cursor_tables
décrit les tables de base référencées par un curseur de serveur. Pour obtenir une description des attributs du jeu de résultats retourné par le curseur, utilisez sp_describe_cursor_columns
. Pour obtenir une description des caractéristiques globales du curseur, telles que sa défilement et sa capacité de mise à jour, utilisez sp_describe_cursor
. 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_tables
pour signaler les tables référencées par le curseur.
USE AdventureWorks2022;
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Person
WHERE LastName LIKE 'S%';
OPEN abc;
GO
-- Declare a cursor variable to hold the cursor output variable
-- from sp_describe_cursor_tables.
DECLARE @Report CURSOR;
-- Execute sp_describe_cursor_tables into the cursor variable.
EXEC master.dbo.sp_describe_cursor_tables
@cursor_return = @Report OUTPUT,
@cursor_source = N'global',
@cursor_identity = N'abc';
-- Fetch all the rows from the sp_describe_cursor_tables 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_tables.
CLOSE @Report;
DEALLOCATE @Report;
GO
-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO