@@CURSOR_ROWS (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Diese Funktion gibt die Anzahl der kennzeichnenden Zeilen zurück, die sich aktuell im letzten für die Verbindung geöffneten Cursor befinden. Zur Verbesserung der Leistung kann SQL Server große statische und keysetgesteuerte Cursor asynchron auffüllen. @@CURSOR_ROWS kann aufgerufen werden, um zu bestimmen, dass die Anzahl der einen Cursor kennzeichnenden Zeilen zum Zeitpunkt des @@CURSOR_ROWS-Aufrufs abgerufen wird.

Transact-SQL-Syntaxkonventionen

Syntax

@@CURSOR_ROWS  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Rückgabetypen

integer

Rückgabewert

Rückgabewert BESCHREIBUNG
-m Der Cursor wird asynchron aufgefüllt. Der zurückgegebene Wert (-m) entspricht der aktuellen Anzahl der Zeilen im Keyset.
-1 Der Cursor ist dynamisch. Da dynamische Cursor alle Änderungen widerspiegeln, ändert sich die Anzahl der Zeilen, die den Cursor kennzeichnen, ständig. Für den Cursor werden nicht unbedingt alle kennzeichnenden Zeilen abgerufen.
0 Es wurden keine Cursor geöffnet, keine Zeilen kennzeichnen den zuletzt geöffneten Cursor, oder der zuletzt geöffnete Cursor wurde geschlossen oder seine Zuordnung aufgehoben.
n Der Cursor ist vollständig aufgefüllt. Der zurückgegebene Wert (n) entspricht der Gesamtanzahl der Zeilen im Cursor.

Hinweise

@@CURSOR_ROWS gibt eine negative Zahl zurück, wenn der letzte Cursor asynchron geöffnet wurde. Keysetgesteuerte oder statische Cursor werden asynchron geöffnet, wenn der Wert für den Cursorschwellenwert „sp_configure“ größer als 0 (null) und die Anzahl der Zeilen im Cursorresultset größer als der Cursorschwellenwert ist.

Beispiele

In diesem Beispiel wird zunächst ein Cursor deklariert und dann SELECT verwendet, um den Wert von @@CURSOR_ROWS anzuzeigen. Die Einstellung hat den Wert 0, bevor der Cursor geöffnet wird, und hat dann den Wert -1, um zu kennzeichnen, dass das Keyset des Cursors asynchron aufgefüllt wird.

USE AdventureWorks2022;  
GO  
SELECT @@CURSOR_ROWS;  
DECLARE Name_Cursor CURSOR FOR  
SELECT LastName ,@@CURSOR_ROWS FROM Person.Person;  
OPEN Name_Cursor;  
FETCH NEXT FROM Name_Cursor;  
SELECT @@CURSOR_ROWS;  
CLOSE Name_Cursor;  
DEALLOCATE Name_Cursor;  
GO             

Im Folgenden werden die Resultsets aufgeführt.

-----------
0  
LastName
---------------
Sanchez
-----------
-1

Weitere Informationen

Cursorfunktionen (Transact-SQL)
OPEN (Transact-SQL)