Condividi tramite


@@FETCH_STATUS (Transact-SQL)

Restituisce lo stato dell'ultima istruzione di cursore FETCH eseguita su uno dei cursori aperti dalla connessione.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

@@FETCH_STATUS

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.

Osservazioni

Poiché la funzione @@FETCH_STATUS è globale per tutti i cursori di una connessione, utilizzarla con attenzione. Dopo l'esecuzione di un'istruzione FETCH, prima di eseguire istruzioni FETCH aggiuntive con un altro cursore è necessario eseguire il test della funzione @@FETCH_STATUS. Il valore di questa funzione viene definito solo dopo l'esecuzione di operazioni di recupero nella connessione.

Un utente, ad esempio, può eseguire un'istruzione FETCH da un cursore e richiamare quindi una stored procedure che apre ed elabora i risultati di un altro cursore. Al termine della stored procedure richiamata, nella funzione @@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 funzione a gestione dinamica sys.dm_exec_cursors.

Esempi

Nell'esempio seguente viene utilizzata la funzione @@FETCH_STATUS per controllare le attività del cursore in un ciclo WHILE.

DECLARE Employee_Cursor CURSOR FOR
SELECT BusinessEntityID, JobTitle
FROM AdventureWorks2008R2.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