Udostępnij za pomocą


@@FETCH_STATUS (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Funkcja ta zwraca status ostatniego wydania kursora FETCH względem dowolnego kursora obecnie otwartego przez połączenie.

Transact-SQL konwencje składni

Składnia

@@FETCH_STATUS  

Zwracany typ

integer

Wartość zwracana

Wartość zwracana Description
 0 Oświadczenie FETCH zakończyło się sukcesem.
-1 Instrukcja FETCH zawiodła lub wiersz przekroczył zbiór wyników.
-2 Brakuje wiersza, który przyniósł.
-9 Kursor nie wykonuje operacji pobierania.

Uwagi

Ponieważ @@FETCH_STATUS jest globalny dla wszystkich kursorów na połączeniu, używaj go ostrożnie. Po wykonaniu instrukcji FETCH test dla @@FETCH_STATUS musi zostać wykonany przed kolejnym wykonaniem instrukcji FETCH na innym kursorze. @@FETCH_STATUS jest niezdefiniowana przed jakimikolwiek pobieraniami na połączeniu.

Na przykład użytkownik wykonuje polecenie FETCH z jednego kursora, a następnie wywołuje procedurę przechowywaną, która otwiera się i przetwarza wyniki z innego kursora. Gdy kontrola wraca z wywołanej procedury przechowywanej, odzwierciedla @@FETCH_STATUS ostatnie wykonanie FETCH wewnątrz tej procedury, a nie polecenie FETCH wykonane przed wywołaniem procedury przechowywanej.

Aby pobrać ostatni status pobierania konkretnego kursora, zapytaj kolumnę fetch_status funkcji zarządzania dynamicznego sys.dm_exec_cursors .

Przykłady

Ten przykład służy @@FETCH_STATUS do sterowania aktywnościami kursora w pętli WHILE .

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  

Zobacz też

Funkcje kursora (Transact-SQL)
PRZYNIEŚ (Transact-SQL)