@@FETCH_STATUS (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Essa função retorna o status do último cursor que a instrução FETCH emitiu em relação a qualquer cursor atualmente aberto pela conexão.
Convenções de sintaxe de Transact-SQL
Sintaxe
@@FETCH_STATUS
Tipo de retorno
inteiro
Valor Retornado
Valor retornado | Descrição |
---|---|
0 | A instrução FETCH foi bem-sucedida. |
-1 | A instrução FETCH falhou ou a linha estava além do conjunto de resultados. |
-2 | A linha buscada está ausente. |
-9 | O cursor não está executando uma operação de busca. |
Comentários
Como @@FETCH_STATUS
é global para todos os cursores em uma conexão, use-o com cuidado. Depois que uma instrução FETCH é executada, o teste para @@FETCH_STATUS
deve ocorrer antes que qualquer outra instrução FETCH seja executada com relação a outro cursor. @@FETCH_STATUS
é indefinido antes de ocorrer qualquer busca na conexão.
Por exemplo, um usuário executa uma instrução FETCH a partir de um cursor e, depois, chama um procedimento armazenado que abre e processa os resultados de outro cursor. Quando o controle retorna desse procedimento armazenado chamado, @@FETCH_STATUS
reflete o último FETCH executado no procedimento armazenado, não a instrução FETCH executada antes de chamar o procedimento armazenado.
Para recuperar o último status chamado de um cursor específico, veja a coluna fetch_status da função de gerenciamento dinâmico sys.dm_exec_cursors.
Exemplos
Este exemplo usa @@FETCH_STATUS
para controlar atividades de cursor em um loop 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