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 con cursores 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 cursorDECLARE <nombre_cursor> CURSOR FOR<sentencia_sql> -- apertura del cursorOPEN <nombre_cursor> -- Lectura de la primera fila del cursor FETCH <nombre_cursor> INTO <lista_variables> WHILE (@@FETCH_STATUS = 0) BEGIN-- Lectura de la siguiente fila de un cursor FETCH <nombre_cursor> INTO <lista_variables> ...END -- Fin del bucle WHILE -- Cierra el cursor CLOSE <nombre_cursor> -- Libera los recursos del cursorDEALLOCATE <nombre_cursor> El siguente ejemplo muestra el uso de un cursor.Declaracion de variables para el cursorDECLARE @Id int, @Nombre varchar(255), @Apellido1 varchar(255), @Apellido2 varchar(255), @NifCif varchar(20), @FxNacimiento datetime -- Declaración del cursorDECLARE cClientes CURSOR FOR SELECT Id, Nombre, Apellido1, Apellido2, NifCif, FxNacimiento FROM CLIENTES -- Apertura del cursorOPEN cClientes -- Lectura de la primera fila del cursorFETCH cClientes INTO @id, @Nombre, @Apellido1, @Apellido2, @NifCif, @FxNacimiento WHILE (@@FETCH_STATUS = 0 ) BEGINPRINT @Nombre + ' ' + @Apellido1 + ' ' + @Apellido2 -- Lectura de la siguiente fila del cursor FETCH cClientes INTO @id, @Nombre, @Apellido1, @Apellido2, @NifCif, @FxNacimientoEND -- Cierre del cursorCLOSE cClientes -- Liberar los recursosDEALLOCATE cClientes
No hay comentarios:
Publicar un comentario