Bases de Datos II CURSORES

9
Bases de Datos II CURSORES Elaborado por: Guillermo Baquerizo I Término 2012

description

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. - PowerPoint PPT Presentation

Transcript of Bases de Datos II CURSORES

Page 1: Bases de Datos II CURSORES

Bases de Datos IICURSORESElaborado por: Guillermo Baquerizo

I Término 2012

Page 2: Bases de Datos II CURSORES

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.

Page 3: Bases de Datos II CURSORES

¿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.

Page 4: Bases de Datos II CURSORES

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>

Page 5: Bases de Datos II CURSORES

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 

Page 6: Bases de Datos II CURSORES

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

Page 7: Bases de Datos II CURSORES

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

Page 8: Bases de Datos II CURSORES

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

Page 9: Bases de Datos II CURSORES

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