Freigeben über


@@CURSOR_ROWS (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

Diese Funktion gibt die Anzahl der qualifizierenden Zeilen zurück, die aktuell im letzten Cursor in der Verbindung geöffnet wurden. Zur Verbesserung der Leistung kann SQL Server große statische und keysetgesteuerte Cursor asynchron auffüllen. @@CURSOR_ROWS kann aufgerufen werden, um zu bestimmen, ob die Anzahl der Zeilen, die für einen Cursor berechtigt sind, zum Zeitpunkt des @@CURSOR_ROWS Aufrufs abgerufen werden.

Transact-SQL-Syntaxkonventionen

Syntax

@@CURSOR_ROWS

Rückgabetypen

int

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. Der Cursor ruft nicht unbedingt alle qualifizierten Zeilen ab.
0 Es sind keine Cursor geöffnet, keine Zeilen, die für den letzten geöffneten Cursor qualifiziert sind, oder der zuletzt geöffnete Cursor wird geschlossen oder umgeglichen.
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. Keyset-Treiber oder statische Cursor werden asynchron geöffnet, wenn der Wert für sp_configure den Cursorschwellenwert überschreitet 0, und die Anzahl der Zeilen im Cursorergebnissatz überschreitet den Cursorschwellenwert.

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   (No column name)   ROWSTAT
---------  -----------------  ---------
Sánchez    -1                 NULL

-----------
-1