Curso de pl sql básico

14
Por: Byron Quisquinay

description

Curso Básico de PL SQL sesión 4.

Transcript of Curso de pl sql básico

Page 1: Curso de pl sql básico

Por: Byron Quisquinay

Page 2: Curso de pl sql básico

Cursores: Es una estructura interna de información. Esta

estructura puede ser accedida a través de PL/SQL y él mismo maneja la estructura, de manera tal que codificando un PL podamos hacer uso de la información contenida en el cursor.

Para esta sesión usted debe de contar con el Script:

Script_curso_PLSQL_Basico_m4_01.sql

De este Script tome el PL anónimo: “Cursores”, cópielo, analícelo con el instructor y ejecútelo.

Page 3: Curso de pl sql básico

--Pl/SQl anónimo: Cursores--Curso: PL/SQL Básico--Script: Script_curso_PLSQL_Basico_m3_01--Objetivo: Instruir a los participantes del curso en el uso de cursores como estructura de datos interactivo.--Autor: Byron Quisquinay--Fecha Elaboración: 17/12/2013--Versión del script: 01declare

cursor clientes isselect clientes.id_cliente,

clientes.nombres,clientes.apellidos,clientes.nit,clientes.dpi

from tbl_cliente_telco clientes;

beginfor ciclo_clientes in clientes loop

begindbms_output.put_line('Id Cliente '||ciclo_clientes.id_cliente||' Nombre: '||ciclo_clientes.nombres||'

Apellidos: '||ciclo_clientes.apellidos||' Número de NIT: '||ciclo_clientes.nit||' DPI número: '||ciclo_clientes.dpi);end;

end loop; --Ciclo_clientesend;

Page 4: Curso de pl sql básico

Siguiendo con cursores Al programar no existe una sola forma de solucionar

un problema, tome de su script el PL anónimo: “Cursores 2”, cópielo, páselo a su herramienta para ejecución de SQL y PL/SQL, analícelo con el instructor, resuelva sus dudas, ejecútelo.

Page 5: Curso de pl sql básico

--Pl/SQl anónimo: Cursores 2--Curso: PL/SQL Básico--Script: Script_curso_PLSQL_Basico_m3_01--Objetivo: Instruir a los participantes del curso en el uso de cursores como estructura de datos

interactivo embebido en el LOOP FOR.--Autor: Byron Quisquinay--Fecha Elaboración: 17/12/2013--Versión del script: 01declare

beginfor ciclo_clientes in (select clientes.id_cliente,

clientes.nombres,clientes.apellidos,clientes.nit,clientes.dpi

from tbl_cliente_telco clientes) loopbegin

dbms_output.put_line('Id Cliente '||ciclo_clientes.id_cliente||' Nombre: '||ciclo_clientes.nombres||' Apellidos: '||ciclo_clientes.apellidos||' Número de NIT: '||ciclo_clientes.nit||' DPI número: '||ciclo_clientes.dpi);

end;end loop; --Ciclo_clientes

end;

Page 6: Curso de pl sql básico

Cursores Implícitos y Explícitos ¿Puede usted indicar la diferencia, basado en lo que ha

visto al momento?

Page 7: Curso de pl sql básico

Ejercitándonos un poco… Cree un PL en donde exista un cursor basado en la

información de la tabla tbl_precio_articulo , imprima los datos de esta tabla.

Page 8: Curso de pl sql básico

Cursores y ciclos aplicados… En su Script del módulo 4 usted posee el PL anónimo:

“Cursores y ciclos aplicado a un problema”, cópielo a su herramienta, analícelo con el instructor, ejecútelo.

Page 9: Curso de pl sql básico

--Pl/SQl anónimo: Cursores y ciclos aplicado a un problema--Curso: PL/SQL Básico--Script: Script_curso_PLSQL_Basico_m3_01--Objetivo: Instruir a los participantes del curso en el uso de cursores como estructura de datos interactivo embebido en el LOOP FOR.--Autor: Byron Quisquinay--Fecha Elaboración: 17/12/2013--Versión del script: 01declare-- Area de Cursorescursor detalle_factura is

select det_fact.factura_id,det_fact.articulo_id,det_fact.cantidad_articulo,det_fact.total_articulo

from tbl_detalle_factura det_fact;

--Declaración de variables, en este PL vl_ significa variable local.vl_precio_articulo tbl_precio_articulo.precio_articulo%type;

beginfor ciclo_det_fact in detalle_factura loop

begin--Se buscará el precio del artículo que figura en el detalle de factura para el cálculo del total por artículo.begin

select nvl(articulo.precio_articulo,0) precio_articulointo vl_precio_articulofrom tbl_precio_articulo articulo

where articulo_id = ciclo_det_fact.articulo_id;exception

when no_data_found thenraise_application_error(-20000,'M4C01- No hay datos para el artículo con id: '||ciclo_det_fact.articulo_id||sqlcode||' - '||sqlerrm);

end;

--Se valida si hay un precio distinto de cero para no afectar la información.if (vl_precio_articulo != 0) then

beginupdate tbl_detalle_factura det_fact

set det_fact.total_articulo = ciclo_det_fact.cantidad_articulo * vl_precio_articulowhere det_fact.factura_id = ciclo_det_fact.factura_idand det_fact.articulo_id = ciclo_det_fact.articulo_id;

end;end if; --Se valida si hay un precio distinto de cero para no afectar la información.

end;end loop; --ciclo_det_fact

--Se aseguran los cambios.commit;

end;

Page 10: Curso de pl sql básico

Ejercitándonos un poco… Actualice el precio del producto de 19.99 a 30.

Ejecute nuevamente el PL anónimo: “Cursores y ciclos aplicado a un problema”.

Realice un query sobre del detalle de factura, vea los cambios.

Comente sus observaciones, comentarios e inquietudes.

Page 11: Curso de pl sql básico

Tarea del Módulo 41. En su archivo de Script para este módulo usted tiene

a su disposición sentencias para crear una tabla para el detalle de IVA, entonces, construya un PL anónimo que:

1. Tenga un cursor del detalle de factura.

2. Declare una constante con el valor del IVA.

3. Inserte datos en la tabla de detalle de IVA.

Page 12: Curso de pl sql básico

Scripts Globales 01 y 021. Usted cuenta con archivos de Script:

“Script_curso_PLSQL_Basico_Global_01(02).sql”, analice y ejecute ambos scripts para contar con las estructuras e información que necesitará para las tareas que a continuación se le asignarán.

Page 13: Curso de pl sql básico

Tareas [2..4] [2] Cree un Pl anónimo que actualice el Total Facturado de

la tabla: tbl_maestra_facturas. Se requiere:

Cursor de facturas.

Actualización de campo Total Facturado = Total Cargos –Total Descuento.

[3] Cree un Pl anónimo para que inserte las facturas con sus datos necesarios en Cuenta Corriente. Para ello se requiere:

Cursor de facturas.

Inserción en Cuenta corriente.

[4] Cree un Pl anónimo que por factura busque los pagos y actualice la cuenta corriente.

Page 14: Curso de pl sql básico

Tabla de Valoración para la tareaElemento Entregado Puenteo

PL anónimo 1 5

PL anónimo 2 30

PL anónimo 3 30

PL anónimo 4 35