sp_describe_cursor_tables (Transact-SQL)

Meldet die Objekte oder Basistabellen, auf die ein Servercursor verweist.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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' ] 
     } 

Argumente

[ @cursor_return = ] output_cursor_variableOUTPUT

Ist der Name einer deklarierten Cursorvariablen, die die Cursorausgabe erhalten soll. output_cursor_variable ist vom Datentyp cursor und hat keinen Standardwert. Dieser Parameter darf beim Aufruf von sp_describe_cursor_tables keinem Cursor zugeordnet sein. Bei dem zurückgegebenen Cursor handelt es sich um einen scrollfähigen, dynamischen, schreibgeschützten Cursor.

[ @cursor_source = ] { N'local'| N'global' | N'variable' }

Gibt an, ob der Cursor, für den der Bericht erstellt wird, mithilfe des Namens eines lokalen Cursors, eines globalen Cursors oder einer Cursorvariablen angegeben wird. Der Parameter ist nvarchar(30).

[ @cursor_identity = ] N'local_cursor_name'

Ist der Name eines mit einer DECLARE CURSOR-Anweisung erstellten Cursors, der entweder das LOCAL-Schlüsselwort aufweist oder standardmäßig auf LOCAL festgelegt wird. local_cursor_name ist vom Datentyp nvarchar(128).

[ @cursor_identity = ] N'global_cursor_name'

Ist der Name eines mit einer DECLARE CURSOR-Anweisung erstellten Cursors, der entweder das GLOBAL-Schlüsselwort aufweist oder standardmäßig auf GLOBAL festgelegt wird. global_cursor_name kann auch der Name eines API-Servercursors sein, der von einer ODBC-Anwendung geöffnet wurde, die den Cursor dann durch den Aufruf von SQLSetCursorName benannt hat. global_cursor_name ist vom Datentyp nvarchar(128).

[ @cursor_identity = ] N'input_cursor_variable'

Ist der Name einer Cursorvariablen, die mit einem geöffneten Cursor verknüpft ist. input_cursor_variable ist vom Datentyp nvarchar(128).

Rückgabecodewerte

Keine

Hinweise

sp_describe_cursor_tables beschreibt die Basistabellen, auf die ein Servercursor verweist. Mit sp_describe_cursor_columns zeigen Sie eine Beschreibung der Attribute des vom Cursor zurückgegebenen Resultsets an. Verwenden Sie sp_describe_cursor für eine Beschreibung der globalen Cursormerkmale, wie z. B. die Scrolloptionen und die Aktualisierbarkeit. Wenn Sie einen Bericht der in der Verbindung sichtbaren Transact-SQL-Servercursor benötigen, verwenden Sie sp_cursor_list.

Berechtigungen

Setzt die Mitgliedschaft in der public-Rolle voraus.

Zurückgegebene Cursor

sp_describe_cursor_tables kapselt den Bericht in einen cursor-Ausgabeparameter von Transact-SQL. Dies ermöglicht, dass Transact-SQL-Batches, gespeicherte Prozeduren und Trigger die Ausgabe zeilenweise verwenden können. Dies bedeutet außerdem, dass es nicht möglich ist, die Prozedur direkt über API-Funktionen aufzurufen. Der cursor-Ausgabeparameter muss an eine Programmvariable gebunden sein, aber die APIs unterstützen die Bindung von cursor-Parametern oder -Variablen nicht.

In der folgenden Tabelle wird das Format des Cursors dargestellt, der von sp_describe_cursor_tables zurückgegeben wird.

Spaltenname Datentyp Beschreibung

table owner

sysname

Die Benutzer-ID des Tabellenbesitzers.

Table_name

sysname

Name des Objekts oder der Basistabelle. In SQL Server 2005 geben Servercursor immer das vom Benutzer angegebene Objekt und nicht die Basistabellen zurück. In SQL Server 2000 geben Servercursor die Basistabellen zurück, es sei denn, die Sicht oder Funktion wird mithilfe von WITH VIEW_METADATA erstellt.

Optimizer_hints

smallint

Bitmapmuster, das sich aus einer oder mehreren der folgenden Optionen zusammensetzt:

1 = Sperre auf Zeilenebene (ROWLOCK)

4 = Sperre auf Seitenebene (PAGELOCK)

8 = Tabellensperre (TABLOCK)

16 = Exklusive Tabellensperre (TABLOCKX)

32 = Aktualisierungssperre (UPDLOCK)

64 = Keine Sperre (NOLOCK)

128 = Schnelle erste Zeilenoption (FASTFIRST)

4096 = Wiederholbarer Lesevorgang bei Verwendung mit DECLARE CURSOR (HOLDLOCK)

Bei Angabe mehrerer Optionen wird vom System die restriktivste Option verwendet. sp_describe_cursor_tables zeigt jedoch die Flags an, die in der Abfrage angegeben sind.

lock_type

smallint

Explizit oder implizit für die diesem Cursor zugrunde liegenden Basistabellen angeforderter Scrollsperrentyp. Die folgenden Werte sind möglich:

0 = Kein

1 = Gemeinsam

3 = Aktualisieren

server_name

sysname, nullable

Der Name des Verbindungsservers, auf dem sich die Tabelle befindet. NULL, wenn OPENQUERY oder OPENROWSET verwendet wird.

Objectid

int

Die Objekt-ID der Tabelle. 0, wenn OPENQUERY oder OPENROWSET verwendet wird.

dbid

int

Die ID der Datenbank, in der sich die Tabelle befindet. 0, wenn OPENQUERY oder OPENROWSET verwendet wird.

dbname

sysname, nullable

Der Name der Datenbank, in der sich die Tabelle befindet. NULL, wenn OPENQUERY oder OPENROWSET verwendet wird.

Beispiele

In diesem Beispiel wird ein globaler Cursor geöffnet und mithilfe von sp_describe_cursor_tables gemeldet, auf welche Tabellen dieser Cursor verweist.

USE AdventureWorks
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Contact
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

Siehe auch

Verweis

CURSOR_STATUS (Transact-SQL)
DECLARE CURSOR (Transact-SQL)
sp_cursor_list (Transact-SQL)
sp_describe_cursor (Transact-SQL)
sp_describe_cursor_columns (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)

Andere Ressourcen

Cursor (Datenbankmodul)

Hilfe und Informationen

Informationsquellen für SQL Server 2005