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'variable' }
    , [ @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’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. @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 la LOCAL mot clé, ou qui a la LOCALvaleur par défaut .local

Lorsque @cursor_source est , @cursor_identity est le nom d’un curseur créé par une DECLARE CURSOR instruction ayant la GLOBAL mot clé, ou qui a la GLOBALvaleur 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_tablesencapsule 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