@@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 relative alla 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. |
-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