140 likes | 479 Views
Bases de Datos II CURSORES. Elaborado por: Guillermo Baquerizo I Término 2012. Definición. En 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.
E N D
Bases de Datos IICURSORES Elaborado por: Guillermo Baquerizo I Término 2012
Definición • En 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 CLOSE • Libere el cursor, utilice la cláusula DEALLOCATE.
Sintaxis general -- Declaración del cursor DECLARE <nombre_cursor> CURSOR FOR <sentencia_sql> -- Apertura del cursor OPEN <nombre_cursor> -- Lectura de la primera fila del cursor FETCH NEXT FROM <nombre_cursor> INTO <lista_variables> WHILE (@@FETCH_STATUS = 0) BEGIN -- Lectura de la siguiente fila de un cursor FETCH NEXT FROM <nombre_cursor> INTO <lista_variables> ... END -- Fin del ciclo WHILE -- Cierre del cursor CLOSE <nombre_cursor> -- Liberación de los recursos del cursor DEALLOCATE <nombre_cursor>
Ejemplo (1/2) -- Declaracion de variables para el cursor DECLARE@Idint, @Nombrevarchar(255), @Apellido1varchar(255), @Apellido2varchar(255), @Cedulachar(10), @FNacimientodatetime -- Declaración del cursor DECLAREcClientesCURSORFOR SELECTId, Nombre, Apellido1, Apellido2, Cedula, FNacimiento FROM CLIENTES -- Apertura del cursor OPENcClientes -- Lectura de la primera fila del cursor FETCH NEXT FROMcClientesINTO@id, @Nombre, @Apellido1, @Apellido2, @Cedula, @FNacimiento
Ejemplo (2/2) WHILE (@@FETCH_STATUS = 0 ) BEGIN PRINT@Nombre + ' ' + @Apellido1 + ' ' + @Apellido2 -- Lectura de la siguiente fila del cursor FETCH NEXT FROMcClientesINTO@id, @Nombre, @Apellido1, @Apellido2, @Cedula, @FNacimiento END -- Cierre del cursor CLOSEcClientes -- Liberación de los recursos DEALLOCATEcClientes
La función FETCH_STATUS • Cuando trabajamos con cursores, la función @@FETCH_STATUS nos indica el estado de la última instrucción FETCH emitida, los valores posibles son:
Ejercicios • Considere 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
Ejercicios • Considere 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