@@FETCH_STATUS (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Esta función devuelve el estado de la última instrucción FETCH del cursor emitida contra cualquier cursor abierto actualmente por la conexión.

Convenciones de sintaxis de Transact-SQL

Sintaxis

@@FETCH_STATUS  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulta la Documentación de versiones anteriores.

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 capturada.
-9 El cursor no está realizando ninguna operación de búsqueda.

Comentarios

Como @@FETCH_STATUS es global para todos los cursores de una conexión, úselo con cuidado. Después de ejecutar una instrucción FETCH, la prueba de @@FETCH_STATUS se debe realizar antes de que se ejecute otra instrucción FETCH sobre otro cursor. @@FETCH_STATUS no está definido antes de producirse las capturas 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 devuelve el control desde el procedimiento almacenado llamado, @@FETCH_STATUS refleja la última instrucción FETCH ejecutada dentro de ese procedimiento almacenado, no la ejecutada antes de llamar al procedimiento almacenado.

Para recuperar el último estado capturado 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

En este ejemplo se usa @@FETCH_STATUS para controlar las actividades del cursor en un bucle 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  

Vea también

Funciones del cursor (Transact-SQL)
FETCH (Transact-SQL)