@@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.
Convenciones 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 capturada. |
Comentarios
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 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 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 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 el ejemplo siguiente se usa @@FETCH_STATUS para controlar las actividades del cursor en un bucle 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