sp_cursor_list (Transact-SQL)
Gilt für: SQL Server
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_nameAUSGABE
Der Name einer deklarierten Cursorvariablen. cursor_variable_name ist der Cursor ohne Standard. 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 int, ohne Standard und kann einer dieser Werte sein.
Wert | Beschreibung des Dataflows |
---|---|
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 als Ausgabeparameter für Transact-SQL-Cursor zurück, nicht als Resultset. Dadurch können Transact-SQL-Batches, gespeicherte Prozeduren und Trigger gleichzeitig mit der Ausgabe arbeiten. 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 den Namen einer DECLARE CURSOR-Anweisung durchlaufen hat, entspricht der Verweisname dem Cursornamen. 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 der Cursor in SQL Server durch Festlegen einer Cursorvariable auf einen Cursor erstellt wurde, gibt cursor_name den Namen der Cursorvariable 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 |
Nebenläufigkeit | 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 = EINFÜGEN 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 werden, die dann SQLSetCursorName genannt wird, um den Cursor zu benennen.
Verwenden Sie sp_describe_cursor_columns für eine Beschreibung der Attribute des vom Cursor zurückgegebenen Resultsets. Mit sp_describe_cursor_tables zeigen Sie an, auf welche Basistabellen der Cursor verweist. sp_describe_cursor meldet die gleichen Informationen wie sp_cursor_list, aber nur für einen 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 AdventureWorks2022;
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
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für