domingo, 7 de agosto de 2011

Cursores en SQL

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 )
BEGIN
PRINT @Nombre + ' ' + @Apellido1 + ' ' + @Apellido2 -- Lectura de la siguiente fila del cursor FETCH cClientes INTO @id, @Nombre, @Apellido1, @Apellido2, @NifCif, @FxNacimiento
END -- Cierre del cursorCLOSE cClientes -- Liberar los recursosDEALLOCATE cClientes

No hay comentarios:

Publicar un comentario