@@FETCH_STATUS (Transact-SQL)

Aplica-se a: SQL Server (todas as versões com suporte) 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.

Topic link iconConvenções de sintaxe do Transact-SQL

Sintaxe

@@FETCH_STATUS  

Observação

Para ver a sintaxe do Transact-SQL para o SQL Server 2014 e versões anteriores, confira a Documentação das versões anteriores.

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 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  

Consulte Também

funções de cursor (Transact-SQL)
FETCH (Transact-SQL)