sp_describe_cursor_tables (Transact-SQL)

Gilt für: SQL Server (alle unterstützten Versionen)

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

ThemenlinksymbolTransact-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_variableAUSGABE
Der Name einer deklarierten Cursorvariablen zum Empfangen der Cursorausgabe. output_cursor_variable ist Cursor, ohne Standard, und darf keine Cursor zum Zeitpunkt des Aufrufs sp_describe_cursor_tables 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'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'
Name eines mit einer DECLARE CURSOR-Anweisung erstellten Cursors, der entweder das LOCAL-Schlüsselwort aufweist oder standardmäßig auf LOCAL festgelegt ist. local_cursor_name ist nvarchar(128).

[ @cursor_identity= ] N'global_cursor_name'
Name eines mit einer DECLARE CURSOR-Anweisung erstellten Cursors, der entweder das GLOBAL-Schlüsselwort aufweist oder standardmäßig auf GLOBAL festgelegt ist. global_cursor_name kann auch der Name eines API-Server-Cursors sein, der von einer ODBC-Anwendung geöffnet wird, die dann den Cursor benannt hat, indem SQLSetCursorName aufgerufen wird. global_cursor_name ist nvarchar(128).

[ @cursor_identity= ] N'input_cursor_variable'
Der Name einer Cursorvariablen, die mit einem geöffneten Cursor verknüpft ist. input_cursor_variable ist nvarchar(128).

Rückgabecodewerte

Keine

Zurückgegebene Cursor

sp_describe_cursor_tables Kapselt seinen Bericht als Transact-SQL-Cursorausgabeparameter . Dadurch können Transact-SQL-Batches, gespeicherte Prozeduren und Trigger gleichzeitig mit der Ausgabe einer Zeile arbeiten. Dies bedeutet außerdem, dass es nicht möglich ist, die Prozedur direkt über API-Funktionen aufzurufen. Der Cursorausgabeparameter muss an eine Programmvariable gebunden werden, die APIs unterstützen jedoch keine Bindungsparameter oder Variablen.

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 geben Servercursors immer das vom Benutzer angegebene Objekt zurück, nicht die Basistabellen.
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 = Updatesperre (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. Der Wert kann in folgenden Formen vorliegen:

0 = Keine

1 = Freigegeben

3 = Update
server_name sysname, nullable Der Name des Verbindungsservers, auf dem sich die Tabelle befindet. NULL, wenn OPENQUERY oder OPENROWSET verwendet wird.
Objectid int 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 Name der Datenbank, in der sich die Tabelle befindet. NULL, wenn OPENQUERY oder OPENROWSET verwendet wird.

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. Verwenden Sie sp_cursor_list, um einen Bericht über die Transact-SQL-Server-Cursor abzurufen, die für die Verbindung sichtbar sind.

Berechtigungen

Erfordert die Mitgliedschaft in der public-Rolle.

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 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  

Weitere Informationen

Cursor
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)