Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Meldet die Attribute der Servercursor, die aktuell für die Verbindung geöffnet sind.
Transact-SQL-Syntaxkonventionen
Syntax
sp_cursor_list [ @cursor_return = ] cursor_variable_name OUTPUT
, [ @cursor_scope = ] cursor_scope
[;]
Argumente
[ @cursor\_return= ] cursor_variable_nameOUTPUT
Der Name einer deklarierten Cursorvariablen. cursor_variable_name ist vom Datentyp cursor und hat keinen Standardwert. Bei dem Cursor handelt es sich um einen scrollfähigen, dynamischen, schreibgeschützten Cursor.[ @cursor\_scope= ] cursor_scope
Gibt die Ebene der Cursor an, die gemeldet werden sollen. cursor_scope ist vom Datentyp int, hat keinen Standardwert und kann einen der folgenden Werte aufweisen.Wert
Beschreibung
1
Alle lokalen Cursor melden.
2
Alle globalen Cursor melden.
3
Lokale und globale Cursor melden.
Rückgabecodewerte
Keine
Zurückgegebene Cursor
sp_cursor_list gibt den Bericht nicht als Resultset, sondern als einen Transact-SQL-Cursorausgabeparameter zurück. 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 Datenbank-API-Funktionen aufzurufen. Der cursor-Ausgabeparameter muss an eine Programmvariable gebunden sein, aber die Datenbank-APIs unterstützen die Bindung von cursor-Parametern oder -Variablen nicht.
Dies ist das Format des von sp_cursor_list zurückgegebenen Cursors. Das Format des Cursors ist mit dem von sp_describe_cursor zurückgegebenen Format identisch.
Spaltenname |
Datentyp |
Beschreibung |
|---|---|---|
reference_name |
sysname |
Der Name, der zum Verweisen auf den Cursor verwendet wird. Wenn der Verweis auf den Cursor über den Namen in einer DECLARE CURSOR-Anweisung erfolgte, ist der Name des Verweises mit dem Cursornamen identisch. Wenn der Verweis auf den Cursor über eine Variable erfolgte, ist der Verweisname der Name der Cursorvariablen. |
cursor_name |
sysname |
Der Name des Cursors aus einer DECLARE CURSOR-Anweisung. Wenn in SQL Server der Cursor erstellt wurde, indem eine Cursorvariable auf einen Cursor festgelegt wurde, gibt cursor_name den Namen der Cursorvariablen zurück. In früheren Versionen gibt diese Ausgabespalte einen systemgenerierten Namen zurück. |
cursor_scope |
smallint |
1 = LOKAL 2 = GLOBAL |
status |
smallint |
Die gleichen Werte, die von der CURSOR_STATUS-Systemfunktion gemeldet werden: 1 = Der Cursor, auf den mit dem Cursornamen oder der Variablen verwiesen wird, ist geöffnet. Ein statischer, Keyset- oder Insensitivcursor weist mindestens eine Zeile auf. Bei einem dynamischen Cursor weist das Resultset keine oder mehr Zeilen auf. 0 = Der Cursor, auf den mit dem Cursornamen oder der Variablen verwiesen wird, ist geöffnet, weist aber keine Zeilen auf. Dynamische Cursor geben diesen Wert nie zurück. -1 = Der Cursor, auf den mit dem Cursornamen oder der Variablen verwiesen wird, ist geschlossen. -2 = Gilt nur für Cursorvariablen. Der Variablen ist kein Cursor zugewiesen. Möglicherweise hat ein OUTPUT-Parameter der Variablen einen Cursor zugewiesen, aber die gespeicherte Prozedur hat den Cursor vor der Rückgabe geschlossen. -3 = Ein Cursor oder eine Cursorvariable mit dem angegebenen Namen ist nicht vorhanden, oder für die Cursorvariable wurde kein Cursor reserviert. |
model |
smallint |
1 = Insensitiv (oder statisch) 2 = Keyset 3 = Dynamisch 4 = Schneller Vorwärtscursor |
concurrency |
smallint |
1 = Schreibgeschützt 2 = Scrollsperre 3 = Vollständig |
scrollable |
smallint |
0 = Vorwärts 1 = Scrollfähig |
open_status |
smallint |
0 = Geschlossen 1 = Geöffnet |
cursor_rows |
int |
Die Anzahl von qualifizierenden Zeilen im Resultset. Weitere Informationen finden Sie unter @@CURSOR_ROWS. |
fetch_status |
smallint |
Der Status des letzten Abrufs für diesen Cursor. Weitere Informationen finden Sie unter @@FETCH_STATUS: 0 = Abruf erfolgreich. -1 = Abruf fehlerhaft oder außerhalb des zulässigen Bereichs des Cursors. -2 = Die angeforderte Zeile fehlt. -9 = Kein Abruf für Cursor. |
column_count |
smallint |
Die Anzahl von Spalten im Resultset des Cursors. |
row_count |
smallint |
Die Anzahl von Zeilen, auf die sich der letzte Vorgang für den Cursor auswirkt. Weitere Informationen finden Sie unter @@ROWCOUNT. |
last_operation |
smallint |
Der zuletzt ausgeführte Vorgang für den Cursor: 0 = Für den Cursor wurden keine Vorgänge ausgeführt. 1 = OPEN 2 = FETCH 3 = INSERT 4 = UPDATE 5 = DELETE 6 = CLOSE 7 = DEALLOCATE |
cursor_handle |
int |
Ein eindeutiger Wert für den Cursor innerhalb des Serverbereichs. |
Hinweise
sp_cursor_list erstellt eine Liste der aktuellen Servercursor, die für die Verbindung geöffnet sind, und beschreibt die globalen Cursorattribute, wie z. B. die Scrolloptionen und die Aktualisierbarkeit des Cursors. sp_cursor_list listet die folgenden Cursor auf:
Transact-SQL-Servercursor.
API-Servercursor, die von einer ODBC-Anwendung geöffnet wurden, die dann SQLSetCursorName genannt wird, um den Cursor zu benennen.
Mit sp_describe_cursor_columns zeigen Sie eine Beschreibung der Attribute des vom Cursor zurückgegebenen Resultsets an. Mit sp_describe_cursor_tables zeigen Sie an, auf welche Basistabellen der Cursor verweist. sp_describe_cursor zeigt die gleichen Informationen an wie sp_cursor_list, jedoch nur für den angegebenen Cursor.
Berechtigungen
Die Ausführungsberechtigungen erhält standardmäßig die public-Rolle.
Beispiele
Im folgenden Beispiel wird ein globaler Cursor geöffnet und mithilfe von sp_cursor_list ein Bericht der Cursorattribute erstellt.
USE AdventureWorks2012;
GO
-- Declare and open a keyset-driven cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Person
WHERE LastName LIKE 'S%';
OPEN abc;
-- Declare a cursor variable to hold the cursor output variable
-- from sp_cursor_list.
DECLARE @Report CURSOR;
-- Execute sp_cursor_list into the cursor variable.
EXEC master.dbo.sp_cursor_list @cursor_return = @Report OUTPUT,
@cursor_scope = 2;
-- Fetch all the rows from the sp_cursor_list output cursor.
FETCH NEXT from @Report;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
FETCH NEXT from @Report;
END
-- Close and deallocate the cursor from sp_cursor_list.
CLOSE @Report;
DEALLOCATE @Report;
GO
-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO