@@FETCH_STATUS (Transact-SQL)

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure

Questa funzione restituisce lo stato dell'ultima istruzione FETCH eseguita su qualsiasi cursore attualmente aperto dalla connessione.

Convenzioni di sintassi Transact-SQL

Sintassi

@@FETCH_STATUS  

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

Tipo restituito

integer

Valore restituito

Valore restituito Descrizione
 0 L'istruzione FETCH ha avuto esito positivo.
-1 L'istruzione FETCH ha avuto esito negativo oppure la riga non è compresa nel set di risultati.
-2 La riga recuperata è mancante.
-9 Il cursore non sta eseguendo un'operazione di recupero.

Osservazioni:

Dato che @@FETCH_STATUS è globale per tutti i cursori di una connessione, usare questa funzione con attenzione. Dopo l'esecuzione di un'istruzione FETCH, è necessario eseguire il test di @@FETCH_STATUS prima di eseguire qualsiasi altra istruzione FETCH su un altro cursore. Il valore di @@FETCH_STATUS viene definito solo dopo l'esecuzione di operazioni di recupero sulla connessione.

Un utente, ad esempio, può eseguire un'istruzione FETCH da un cursore e chiamare quindi una stored procedure che apre ed elabora i risultati da un altro cursore. Quando la stored procedure chiamata restituisce il controllo, in @@FETCH_STATUS è riportato il risultato dell'ultima istruzione FETCH eseguita nella stored procedure, non dell'istruzione FETCH eseguita prima della chiamata della stored procedure.

Per recuperare l'ultimo stato di un cursore specifico, eseguire una query nella colonna fetch_status della DMF sys.dm_exec_cursors.

Esempi

Questo esempio usa @@FETCH_STATUS per controllare le attività del cursore in un ciclo 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  

Vedi anche

Funzioni cursori (Transact-SQL)
FETCH (Transact-SQL)