Partilhar via


@@FETCH_STATUS (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Esta função devolve o estado da última instrução FETCH do cursor emitida contra qualquer cursor atualmente aberto pela ligação.

Transact-SQL convenções de sintaxe

Sintaxe

@@FETCH_STATUS  

Tipo de Retorno

integer

Valor de retorno

Valor de retorno Description
 0 A declaração FETCH foi bem-sucedida.
-1 A instrução FETCH falhou ou a linha estava para além do conjunto de resultados.
-2 A fila que foi buscar está em falta.
-9 O cursor não está a realizar uma operação de busca.

Observações

Como @@FETCH_STATUS é global para todos os cursores de uma ligação, usa-o com cuidado. Após a execução da instrução FETCH, o teste para @@FETCH_STATUS deve ocorrer antes de qualquer outra instrução FETCH ser executada contra outro cursor. @@FETCH_STATUS é indefinida antes de quaisquer fetches terem ocorrido na ligação.

Por exemplo, um utilizador 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 controlo retorna desse procedimento armazenado chamado, @@FETCH_STATUS reflete o último FETCH executado dentro desse procedimento armazenado, não a instrução FETCH executada antes da chamada ao procedimento armazenado.

Para obter o estado de última busca de um cursor específico, consulte a coluna fetch_status da função de gestão dinâmica de sys.dm_exec_cursors .

Examples

Este exemplo serve @@FETCH_STATUS para controlar as atividades do cursor num WHILE ciclo.

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  

Ver também

Funções do cursor (Transact-SQL)
BUSCAR (Transact-SQL)