@@FETCH_STATUS (Transact-SQL)

Devuelve el estado de la última instrucción FETCH de cursor emitida para cualquier cursor abierto en ese momento por la conexión.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

@@FETCH_STATUS

Tipo de valor devuelto

integer

Valor devuelto

Valor devuelto

Descripción

0

La instrucción FETCH se ejecutó correctamente.

-1

La instrucción FETCH no se ejecutó correctamente o la fila estaba más allá del conjunto de resultados.

-2

Falta la fila recuperada.

Notas

Al ser @@FETCH_STATUS global para todos los cursores de una conexión, debe usarse con cuidado. Después de ejecutar una instrucción FETCH, la comprobación de @@FETCH_STATUS se debe realizar antes de que se ejecute otra instrucción FETCH sobre otro cursor. El valor de @@FETCH_STATUS no está definido antes de producirse las recuperaciones en la conexión.

Por ejemplo, supongamos que un usuario ejecuta una instrucción FETCH sobre un cursor y a continuación llama a un procedimiento almacenado que abre y procesa los resultados de otro cursor. Cuando vuelve el control desde el procedimiento almacenado llamado, @@FETCH_STATUS reflejará la última instrucción FETCH ejecutada en el procedimiento almacenado, no la ejecutada antes de llamar al procedimiento.

Para recuperar el último estado recuperado de un cursor específico, realice una consulta en la columna fetch_status de la función de administración dinámica sys.dm_exec_cursors.

Ejemplos

Este ejemplo utiliza @@FETCH_STATUS para controlar las actividades del cursor en un bucle WHILE.

DECLARE Employee_Cursor CURSOR FOR
SELECT EmployeeID, Title FROM AdventureWorks.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