Condividi tramite


@@FETCH_STATUS (Transact-SQL)

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

Si applica a: SQL Server (SQL Server 2008 tramite versione corrente), Database SQL di Windows Azure (versione iniziale tramite versione corrente).

Icona di collegamento a un argomento Convenzioni 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 AdventureWorks2012.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

Vedere anche

Riferimento

Funzioni per i cursori (Transact-SQL)

FETCH (Transact-SQL)