sp_describe_cursor_tables (Transact-SQL)

Indique les objets ou tables de base référencés par un curseur côté serveur.

Icône Lien de rubrique Conventions de la syntaxe de Transact-SQL

Syntaxe

sp_describe_cursor_tables 
     [ @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_variableOUTPUT
    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_tables 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 peut aussi être le nom d'un curseur côté serveur d'API ouvert par une application ODBC qui l'a ensuite nommé en appelant SQLSetCursorName.global_cursor_name est de type nvarchar(128).

  • [ @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_tables 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. Par ailleurs, la procédure ne peut pas être appelée directement depuis les fonctions d'API. Le paramètre de sortie cursor doit être lié à une variable de programme, mais les API 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é 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 côté serveur retournent toujours l'objet spécifié par l'utilisateur, et non les tables de base.

Optimizer_hints

smallint

Bitmap composée d'un ou plusieurs des éléments suivants :

1 = Verrouillage au niveau de la ligne (ROWLOCK)

4 = Verrouillage au niveau de la page (PAGELOCK)

8 = Verrou de table (TABLOCK)

16 = Verrou de table exclusif (TABLOCKX)

32 = Verrou de mise à jour (UPDLOCK)

64 = Pas de verrou (NOLOCK)

128 = Option de première ligne rapide (FASTFIRST)

4096 = Lecture des sémantiques répétées lorsqu'elles sont utilisées 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. Il peut s'agir de l'une des valeurs suivantes :

0 = Aucun

1 = Partagé

3 = Mettre à jour

server_name

sysname, nullable

Nom du serveur lié sur lequel réside la table. Prend la valeur NULL quand OPENQUERY ou OPENROWSET sont utilisés.

Objectid

int

ID d'objet de la table. Prend la valeur 0 quand OPENQUERY ou OPENROWSET sont utilisés.

dbid

int

ID de la base de données dans laquelle réside la table. Prend la valeur 0 quand OPENQUERY ou OPENROWSET sont utilisés.

dbname

sysname, nullable

Nom de la base de données dans laquelle réside la table. Prend la valeur NULL quand OPENQUERY ou OPENROWSET sont utilisés.

Notes

sp_describe_cursor_tables décrit les tables de base qui sont référencées par un curseur côté serveur. Utilisez sp_describe_cursor_columns pour obtenir la description des attributs du jeu de résultats retourné par le curseur. Utilisez sp_describe_cursor pour obtenir la description des caractéristiques globales du curseur, par exemple sa capacité à permettre le défilement et les mises à jour. Utilisez sp_cursor_list pour obtenir un rapport sur les curseurs côté serveur Transact-SQL qui sont visibles à la connexion.

Autorisations

Nécessite l'appartenance au rôle public.

Exemples

Cet exemple ouvre un curseur global et utilise sp_describe_cursor_tables pour fournir un rapport sur les tables qui sont référencées par le curseur.

USE AdventureWorks2012;
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

Voir aussi

Référence

CURSOR_STATUS (Transact-SQL)

DECLARE CURSOR (Transact-SQL)

sp_cursor_list (Transact-SQL)

sp_describe_cursor (Transact-SQL)

sp_describe_cursor_columns (Transact-SQL)

Procédures stockées système (Transact-SQL)

Concepts

Curseurs