@@FETCH_STATUS (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
Diese Funktion gibt den Status der letzten Cursor-FETCH-Anweisung zurück, die für einen beliebigen der aktuell von der Verbindung geöffneten Cursor ausgegeben wurde.
Transact-SQL-Syntaxkonventionen
Syntax
@@FETCH_STATUS
Rückgabetyp
integer
Rückgabewert
Rückgabewert | BESCHREIBUNG |
---|---|
0 | Die FETCH-Anweisung war erfolgreich. |
-1 | Die FETCH-Anweisung ist fehlgeschlagen, oder die Zeile war außerhalb des Resultsets. |
-2 | Die abgerufene Zeile fehlt. |
–9 | Der Cursor führt keinen Abrufvorgang aus. |
Hinweise
Da @@FETCH_STATUS
global für alle Cursor bei einer Verbindung gilt, verwenden Sie dies mit Bedacht. Nachdem eine FETCH-Anweisung ausgeführt wurde, muss der Test für @@FETCH_STATUS
durchgeführt werden, bevor eine weitere FETCH-Anweisung für einen anderen Cursor ausgeführt wird. @@FETCH_STATUS
wird erst definiert, wenn ein Abrufvorgang für die Verbindung ausgeführt wurde.
Ein Benutzer führt z.B. eine FETCH-Anweisung von einem Cursor aus durch und ruft dann eine gespeicherte Prozedur auf, die die Ergebnisse von einem anderen Cursor aus öffnet und verarbeitet. Wenn die Steuerung von der aufgerufenen gespeicherten Prozedur zurückgegeben wird, spiegelt @@FETCH_STATUS
die letzte in der Prozedur ausgeführte FETCH-Anweisung wider und nicht die FETCH-Anweisung, die vor dem Aufruf der gespeicherten Prozedur ausgeführt wurde.
Um den letzten FETCH-Status eines bestimmten Cursors abzurufen, führen Sie eine Abfrage der fetch_status-Spalte in der dynamischen Verwaltungsfunktion sys.dm_exec_cursors durch.
Beispiele
In diesem Beispiel wird @@FETCH_STATUS
zur Steuerung der Cursoraktivitäten in einer WHILE
-Schleife verwendet.
DECLARE Employee_Cursor CURSOR FOR
SELECT BusinessEntityID, JobTitle
FROM AdventureWorks2022.HumanResources.Employee;
OPEN Employee_Cursor;
FETCH NEXT FROM Employee_Cursor;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Employee_Cursor;
END;
CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;
GO