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 ein Cursor ohne 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 int ohne Standardwert und kann einer dieser Werte sein.

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 als Transact-SQL-Cursorausgabeparameter zurück, nicht als Resultset. Dadurch können Transact-SQL-Batches, gespeicherte Prozeduren und Trigger zeilenweise 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 über den namen in einer DECLARE CURSOR-Anweisung angegeben wurde, ist der Verweisname 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 der Cursor in SQL Server durch Festlegen einer Cursorvariablen 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
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.

Bemerkungen

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 Server-Cursor.

  • API-Servercursor, die von einer ODBC-Anwendung geöffnet wurden, die dann SQLSetCursorName zum Benennen des Cursors aufgerufen hat.

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 meldet die gleichen Informationen wie sp_cursor_list, jedoch 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

Gespeicherte Systemprozeduren (Transact-SQL)