Bases de Datos II CURSORES
description
Transcript of Bases de Datos II CURSORES
Bases de Datos IICURSORESElaborado por: Guillermo Baquerizo
I Término 2012
DefiniciónEn ciencias de la computación y la
tecnología, un cursor de base de datos es una estructura de control que permite recorrer los registros de una base de datos.
Los cursores facilitan el procesamiento posterior en relación con el recorrido, la recuperación, la adición y la eliminación de los registros de la base de datos.
Permiten hacer reportes en el propio ambiente de la base de datos, sin tener un aplicativo adicional.
¿Cómo se crea y utiliza?Declare el cursor, utilice la cláusula
DECLARE.Abra el cursor, utilice la cláusula OPEN.Lea los datos del cursor, uno por uno, utilice
la cláusula FETCH NEXT FROM ... INTO.Cierre el cursor, utilice la cláusula CLOSELibere el cursor, utilice la cláusula
DEALLOCATE.
Sintaxis general-- Declaración del cursorDECLARE <nombre_cursor> CURSOR FOR<sentencia_sql> -- Apertura del cursorOPEN <nombre_cursor> -- Lectura de la primera fila del cursorFETCH NEXT FROM <nombre_cursor> INTO <lista_variables> WHILE (@@FETCH_STATUS = 0)BEGIN-- Lectura de la siguiente fila de un cursorFETCH NEXT FROM <nombre_cursor> INTO <lista_variables>... END -- Fin del ciclo WHILE -- Cierre del cursorCLOSE <nombre_cursor>
-- Liberación de los recursos del cursorDEALLOCATE <nombre_cursor>
Ejemplo (1/2)-- Declaracion de variables para el cursorDECLARE @Id int,
@Nombre varchar(255), @Apellido1 varchar(255), @Apellido2 varchar(255), @Cedula char(10), @FNacimiento datetime
-- Declaración del cursorDECLARE cClientes CURSOR FORSELECT Id, Nombre, Apellido1, Apellido2, Cedula, FNacimientoFROM CLIENTES-- Apertura del cursorOPEN cClientes-- Lectura de la primera fila del cursorFETCH NEXT FROM cClientes INTO @id, @Nombre,
@Apellido1, @Apellido2, @Cedula, @FNacimiento
Ejemplo (2/2)WHILE (@@FETCH_STATUS = 0 )BEGINPRINT @Nombre + ' ' + @Apellido1 + ' ' + @Apellido2-- Lectura de la siguiente fila del cursorFETCH NEXT FROM cClientes INTO @id, @Nombre,
@Apellido1, @Apellido2, @Cedula, @FNacimientoEND -- Cierre del cursorCLOSE cClientes
-- Liberación de los recursosDEALLOCATE cClientes
La función FETCH_STATUSCuando trabajamos con cursores, la función
@@FETCH_STATUS nos indica el estado de la última instrucción FETCH emitida, los valores posibles son:Valor devuelt
o
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 recuperada
EjerciciosConsidere la base de datos Pubs:
Muestre los libros que pertenecen a los autores que son del estado de Utah.
El reporte debe mostrarse así:
Reporte de autores de UTAH Libros del autor: XXXXXXXX
YYYYYYY YYYYYYY
Libros del autor: WWWWW TTTTTTT TTTTTTT
EjerciciosConsidere la base de datos Northwind:
Muestre un reporte con todos los empleados que han provocado que lleguen atrasadas las órdenes. Suponga que se les va a multar con $1 por cada día de atraso, de cada orden que tiene esta característica. Su reporte en pantalla debe mostrar el filtro por empleado .
El reporte debe mostrarse así:
Reporte de Empleados con órdenes atrasadas: Órdenes del empleado: AAAAAAAA
BBBBBBBB BBBBBBBB