Freigeben über


sp_describe_cursor_tables (Transact-SQL)

Gilt für: SQL Server

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

Transact-SQL-Syntaxkonventionen

Syntax

sp_describe_cursor_tables
    [ @cursor_return = ] cursor_return OUTPUT
    , [ @cursor_source = ] { N'local' | N'global' | N'*cursor_source*' }
    , [ @cursor_identity = ] N'cursor_identity'
[ ; ]

Argumente

[ @cursor_return = ] cursor_return OUTPUT

Der Name einer deklarierten Cursorvariable, um die Cursorausgabe zu empfangen. @cursor_return ist ein AUSGABEcursor ohne Standard und darf zu dem Zeitpunktsp_describe_cursor_tables, zu dem Cursor aufgerufen werden, nicht zugeordnet werden. Bei dem zurückgegebenen Cursor handelt es sich um einen scrollfähigen, dynamischen, schreibgeschützten Cursor.

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

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. @cursor_source ist nvarchar(30) ohne Standard.

[ @cursor_identity = ] N'cursor_identity'

Wenn @cursor_source ist, ist @cursor_identity der Name eines Cursors, der von einer DECLARE CURSOR Anweisung erstellt wird, entweder mit dem LOCAL Schlüsselwort oder standardmäßig LOCAL. local

Wenn @cursor_source ist, ist @cursor_identity der Name eines Cursors, der von einer DECLARE CURSOR Anweisung erstellt wird, entweder mit dem GLOBAL Schlüsselwort oder standardmäßig GLOBAL. global @cursor_identity kann auch der Name eines API-Servercursors sein, der von einer ODBC-Anwendung geöffnet wird, die dann den Cursor durch Aufrufen SQLSetCursorNamebenannt hat.

Wenn @cursor_source ist variable, ist @cursor_identity der Name einer Cursorvariable, die einem geöffneten Cursor zugeordnet ist.

@cursor_identity ist nvarchar(128), ohne Standard.

Rückgabecodewerte

Keine.

Zurückgegebene Cursor

sp_describe_cursor_tablesKapselt seinen Bericht als Transact-SQL-Cursorausgabeparameter. Dadurch können Transact-SQL-Batches, gespeicherte Prozeduren und Trigger gleichzeitig mit der Ausgabe arbeiten. Dies bedeutet auch, dass die Prozedur nicht direkt aus API-Funktionen aufgerufen werden kann. Der Cursorausgabeparameter muss an eine Programmvariable gebunden werden, die APIs unterstützen jedoch keine Bindungscursorparameter oder Variablen.

Die folgende Tabelle zeigt das Format des Cursors, der von sp_describe_cursor_tables.

Spaltenname Datentyp Beschreibung
table_owner sysname Die Benutzer-ID des Tabellenbesitzers.
table_name sysname Name des Objekts oder der Basistabelle. In SQL Server geben Servercursor immer das vom Benutzer angegebene Objekt zurück, nicht die Basistabellen.
optimizer_hint smallint Bitmap, die aus einer oder mehreren der folgenden Optionen besteht:

1 = Sperren auf Zeilenebene (ROWLOCK)
4 = Sperrung auf Seitenebene (PAGELOCK)
8 = Tabellensperre (TABLOCK)
16 = Exklusive Tabellensperre (TABLOCKX)
32 = Updatesperre (UPDLOCK)
64 = Keine Sperre (NOLOCK)
128 = Schnelle Option für erste Zeile (FASTFIRST)
4096 = Wiederholbare Semantik lesen, wenn sie mit DECLARE CURSOR (HOLDLOCK)

Bei Angabe mehrerer Optionen wird vom System die restriktivste Option verwendet. Zeigt jedoch die Flags an, sp_describe_cursor_tables die in der Abfrage angegeben sind.
lock_type smallint Explizit oder implizit für die diesem Cursor zugrunde liegenden Basistabellen angeforderter Scrollsperrentyp. Der Wert kann eine der folgenden Optionen sein:

0 = Keine
1 = Freigegeben
3 = Update
server_name sysname, nullable Der Name des Verbindungsservers, auf dem sich die Tabelle befindet. NULL wann OPENQUERY oder OPENROWSET werden verwendet.
objectid int Objekt-ID der Tabelle. 0, wenn OPENQUERY oder OPENROWSET verwendet wird.
dbid int ID der Datenbank, in der sich die Tabelle befindet. 0, wenn OPENQUERY oder OPENROWSET verwendet wird.
dbname sysname, nullable Name der Datenbank, in der sich die Tabelle befindet. NULL wann OPENQUERY oder OPENROWSET werden verwendet.

Hinweise

sp_describe_cursor_tables beschreibt die Basistabellen, auf die von einem Servercursor verwiesen wird. Verwenden Sie sp_describe_cursor_columnseine Beschreibung der Attribute des vom Cursor zurückgegebenen Resultsets. Verwenden Sie für eine Beschreibung der globalen Merkmale des Cursors, z. B. die Bildlaufbarkeit und Die Updataability sp_describe_cursor. Verwenden Sie die Verwendung sp_cursor_list, um einen Bericht der Transact-SQL-Servercursor abzurufen, die für die Verbindung sichtbar sind.

Berechtigungen

Erfordert die Mitgliedschaft in der public -Rolle.

Beispiele

Im folgenden Beispiel wird ein globaler Cursor geöffnet und zum sp_describe_cursor_tables Melden der Tabellen verwendet, auf die der Cursor verweist.

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