cursores
Un cursor es una variable que nos permite recorrer con un conjunto de resultados obtenido a través de una sentencia SELECT fila a fila.
Cuando trabajemos concursores debemos seguir los siguientes pasos.
Declarar el cursor, utilizando DECLARE
Abrir el cursor, utilizando OPEN
Leer los datos del cursor, utilizando FETCH ... INTO
Cerrar el cursor,utilizando CLOSE
Liberar el cursor, utilizando DEALLOCATE
La sintaxis general para trabajar con un cursor es la siguiente.
-- Declaración del cursor
DECLARE CURSOR
FOR
-- apertura del cursorOPEN
-- Lectura de la primera fila del cursor
FETCH INTO
WHILE (@@FETCH_STATUS = 0)
BEGIN
-- Lectura de la siguiente fila de un cursor
FETCH INTO
...
END -- Fin del bucle WHILE
-- Cierra el cursor
CLOSE
-- Libera los recursos del cursor
DEALLOCATE
El siguente ejemplo muestra el uso de un cursor.
-- Declaracion de variables para el cursor
DECLARE @Id int,@Nombre varchar(255),
@Apellido1 varchar(255),
@Apellido2 varchar(255),
@NifCif varchar(20),
@FxNacimiento datetime
-- Declaración del cursor
DECLARE cClientes CURSOR FOR
SELECT Id,Nombre, Apellido1,
Apellido2, NifCif, FxNacimiento
FROM CLIENTES
-- Apertura del cursor
OPEN cClientes
-- Lectura de la primera fila del cursor
FETCH cClientes INTO @id, @Nombre, @Apellido1,@Apellido2, @NifCif, @FxNacimiento
WHILE (@@FETCH_STATUS = 0 )
BEGIN
PRINT @Nombre + ' ' + @Apellido1 + ' ' + @Apellido2
-- Lectura de la siguiente fila del cursor
FETCH cClientes INTO@id, @Nombre, @Apellido1,
@Apellido2, @NifCif, @FxNacimiento
END
-- Cierre del cursor
CLOSE cClientes
-- Liberar los recursos
DEALLOCATE cClientes
Cuando trabajamos con cursores,la funcion @@FETCH_STATUS nos indica el estado de la última instrucción FETCH emitida, los valores posibles son:
Valor devuelto
Descripción
0
La instrucción FETCH se ejecutó correctamente.
-1...
Regístrate para leer el documento completo.