@@FETCH_STATUS (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure 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
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