@@FETCH_STATUS (Transact-SQL)@@FETCH_STATUS (Transact-SQL)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure nãoSQL Data Warehouse do Azure nãoParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

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.This function returns the status of the last cursor FETCH statement issued against any cursor currently opened by the connection.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

@@FETCH_STATUS  

Tipo de retornoReturn Type

inteirointeger

Valor retornadoReturn Value

Valor retornadoReturn value DescriçãoDescription
 0 0 A instrução FETCH foi bem-sucedida.The FETCH statement was successful.
-1-1 A instrução FETCH falhou ou a linha estava além do conjunto de resultados.The FETCH statement failed or the row was beyond the result set.
-2-2 A linha buscada está ausente.The row fetched is missing.
-9-9 O cursor não está executando uma operação de busca.The cursor is not performing a fetch operation.

RemarksRemarks

Como @@FETCH_STATUS é global para todos os cursores em uma conexão, use-o com cuidado.Because @@FETCH_STATUS is global to all cursors on a connection, use it carefully. 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.After a FETCH statement executes, the test for @@FETCH_STATUS must occur before any other FETCH statement executes against another cursor. @@FETCH_STATUS é indefinido antes de ocorrer qualquer busca na conexão.@@FETCH_STATUS is undefined before any fetches have occurred on the connection.

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.For example, a user executes a FETCH statement from one cursor, and then calls a stored procedure that opens and processes results from another 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.When control returns from that called stored procedure, @@FETCH_STATUS reflects the last FETCH executed inside that stored procedure, not the FETCH statement executed before the call to the stored procedure.

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.To retrieve the last fetch status of a specific cursor, query the fetch_status column of the sys.dm_exec_cursors dynamic management function.

ExemplosExamples

Este exemplo usa @@FETCH_STATUS para controlar atividades de cursor em um loop WHILE.This example uses @@FETCH_STATUS to control cursor activities in a WHILE loop.

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émSee Also

Funções de cursor (Transact-SQL) Cursor Functions (Transact-SQL)
FETCH (Transact-SQL)FETCH (Transact-SQL)