curso de pl sql básico

11
Curso de PL/SQL Básico Por: Byron Quisquinay M2

Upload: byron-quisquinay

Post on 20-Jun-2015

146 views

Category:

Education


4 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Curso de pl sql básico

Curso de PL/SQL BásicoPor: Byron Quisquinay

M2

Page 2: Curso de pl sql básico

%typeCon el atributo %type usted asigna a una

variable el tipo de una columna perteneciente a una tabla existente en la Base de Datos.

Es decir que usted no necesita definir los tipos de datos para variables que recibirán el valor almacenado en un campo.

El uso de este atributo es una buena práctica dada la posibilidad de que en determinado momento el tipo, ancho y precisión de un campo de tabla puede variar.

Page 3: Curso de pl sql básico

Explorando %typeUsted debe contar con el Script:

Script_curso_PLSQL_Basico_m2_01.sql.Entonces encontrará el PL anónimo:

--Pl/SQl anónimo: Uso de %typeCópielo a su herramienta, analicemos su

construcción y funcionamiento.Ejecútelo

Page 4: Curso de pl sql básico

--Pl/SQl anónimo: Uso de %type--Curso: PL/SQL Básico--Script: Script_curso_PLSQL_Basico_m2_01--Objetivo: Instruir a los participantes del curso en el uso de PL/SQL para el empleo de %type, exception e if.--Autor: Byron Quisquinay--Fecha Elaboración: 12/12/2013--Versión del script: 01declare

v_articulo_id tbl_precio_articulo.articulo_id%type;v_factura_id tbl_detalle_factura.factura_id%type; v_precio_articulo tbl_precio_articulo.precio_articulo%type;

begin --Buscaremos el artículo (mayor) del detalle de factura begin select max(DetFact.articulo_id) into v_articulo_id from tbl_detalle_factura DetFact; exception when no_data_found then v_articulo_id := 0; end; --Si se encontró una artículo facturado se buscará el detalle. if (v_articulo_id != 0) then

begin select PrecArt.precio_articulo into v_precio_articulo from tbl_precio_articulo PrecArt where PrecArt.articulo_id = v_articulo_id; end;

begin select DetFact.factura_id into v_factura_id from tbl_detalle_factura DetFact where articulo_id = v_articulo_id; end;

begin update tbl_detalle_factura DetFact set DetFact.total_articulo = nvl(DetFact.cantidad_articulo,0) * nvl(v_precio_articulo,0) where DetFact.factura_id = v_factura_id; end; end if; commit;end;

Page 5: Curso de pl sql básico

Se puede mejorar… Ahora en su archivo de Script para el Módulo

2 busque el PL anónimo: --Pl/SQl anónimo: Uso de %type mejorado

¿Qué nota en esta otra versión?

Page 6: Curso de pl sql básico

declare

v_articulo_id tbl_precio_articulo.articulo_id%type;v_factura_id tbl_detalle_factura.factura_id%type; v_precio_articulo tbl_precio_articulo.precio_articulo%type;

begin --Buscaremos el artículo (mayor) del detalle de factura begin select max(DetFact.articulo_id) into v_articulo_id from tbl_detalle_factura DetFact; exception when no_data_found then v_articulo_id := 0; end; --Si se encontró una artículo facturado se buscará el detalle. if (v_articulo_id != 0) then

begin select nvl(PrecArt.precio_articulo, 0) precio_articulo into v_precio_articulo from tbl_precio_articulo PrecArt where PrecArt.articulo_id = v_articulo_id; exception when no_data_found then v_precio_articulo := 0; end;

--Si se encontró un precio distinto de cero busque la actura a la que está asociado if (v_precio_articulo != 0) then begin select DetFact.factura_id into v_factura_id from tbl_detalle_factura DetFact where articulo_id = v_articulo_id; exception when no_data_found then v_factura_id := null; end;

--Si hay factura para actualizar entonces realice la actualización en base al precio del artículo if (v_factura_id is not null) then begin update tbl_detalle_factura DetFact set DetFact.total_articulo = nvl(DetFact.cantidad_articulo,0) * nvl(v_precio_articulo,0) where DetFact.factura_id = v_factura_id; end; end if; --Si hay factura para actualizar entonces realice la actualización en base al precio del artículo

end if;--Si se encontró un precio distinto de cero busque la factura a la que está asociado

end if; --Si se encontró una artículo facturado se buscará el detalle. commit;end;

Page 7: Curso de pl sql básico

Practicando un pocoConstruya un PL para:

Insertar un artículo en tbl_precio_articulo. Recuerde que estas sentencias ya las posee en el Script del Módulo 1, no se desgaste escribiéndolas de nueva cuenta. Este artículo tendrá un precio de 100.25.

También deberá insertar un detalle de factura para este artículo, con 1 unidad facturada, del nuevo artículo que recién usted ha insertado.

¿Funcionaría el PL anónimo: “--Pl/SQl anónimo: Uso de %type mejorado”, para actualizar “tbl_detalle_factura. total_articulo”?

Si cree que es afirmativa la respuesta la pregunta anterior, ejecute el Script, de caso contrario modifique el PL anónimo para que pueda actualizar el Total de Artículo para la nueva línea en “tbl_detalle_factura”.

Page 8: Curso de pl sql básico

ConstantesAl declarar CONSTANT usted define un

elemento que no puede variar su valor.Del script del Módulo 2 tome el PL anónimo:

--Pl/SQl anónimo: Realizando cálculos empleando constantes

Analice el PL.Ejecútelo.

Page 9: Curso de pl sql básico

--Pl/SQl anónimo: Realizando cálculos empleando constantes--Curso: PL/SQL Básico--Script: Script_curso_PLSQL_Basico_m2_01--Objetivo: Instruir a los participantes del curso en el uso de PL/SQL para el

empleo de operaciones matemáticas.--Autor: Byron Quisquinay--Fecha Elaboración: 12/12/2013--Versión del script: 01declare c_impuesto constant number(1) :=5; --Constante del impuesto para el

pequeño contribuyente. v_valor_facturado number(18,2) :=3000; --Variable que tendrá el valor

facturado. v_impuesto_pagar number(18,2); --Valor resultante de calcular sobre el

valor facturado el impuesto a pagar.begin v_impuesto_pagar := round((v_valor_facturado * c_impuesto)/100,2); dbms_output.put_line('De un valor facturado de: '||v_valor_facturado||' el impuesto

a pagar es: '||v_impuesto_pagar);end;

Page 10: Curso de pl sql básico

Tareas del Módulo 21. Construya un PL anónimo que calcule para un total de venta

realizado el valor de IVA a pagar, demuestre los valores de Venta e IVA.

2. Cree un PL anónimo para que de un valor definido como variable controle si es positivo o negativo, de ser positivo que retorne el mensaje: Positivo, de ser negativo que muestre el mensaje: Negativo.

3. Construya un PL anónimo con una constante que contenga un divisor, una variable que contenga el número a dividir, si el residuo de la división es cero (0) entonces que despliegue la leyenda ‘Realizar commit’, si no es cero, entonces que despliegue la leyenda: ‘Aún no realizar comit’; Valor de la constante = 1000, primer valor de la variable = 2000.

4. Codifique un PL anónimo que tenga una constante que será una fecha fija esperada = 20/diciembre/2013, una variable que tendrá una fecha a evaluar, si la fecha esperada es igual a la evaluada, que se indique un mensaje así: ‘Fechas coinciden’, de lo contrario la leyenda ‘Fechas no coinciden’.

Page 11: Curso de pl sql básico

Tabla de Valoración para la tareaElemento Entregado Punteo

PL anónimo 1 25

PL anónimo 2 25

PL anónimo 3 25

PL anónimo 2 25