El documento presenta información sobre el uso del atributo %type en PL/SQL para asignar tipos de datos a variables basados en los tipos de datos de columnas de tablas. También incluye ejemplos de PL/SQL anónimos que ilustran el uso de %type, constantes e if/else para realizar validaciones y cálculos. Finalmente, propone algunas tareas para que el lector practique estos conceptos.
Manual de Generación de Nómina (v1.0) en eFactory Software ERP/CRM en la nube.
Ayudas online de eFactory Software ERP/CRM en la nube:
https://efactoryerp.com/ayudas-manuales-online-software-efactory-erp-crm-en-la-nube.html
Modulos de las Soluciones eFactory:
Modulo de Obras y Proyectos:
https://efactoryerp.com/soluciones/software-gestion-obras-proyectos-erp-crm.html
Modulo de Contabilidad:
https://efactoryerp.com/soluciones/software-contabilidad-erp-crm.html
Modulo de Nomina y RRHH:
https://efactoryerp.com/soluciones/software-rrhh-nomina-erp-crm.html
Modulo de CRM:
https://efactoryerp.com/soluciones/software-crm.html
Modulo de Ventas:
https://efactoryerp.com/soluciones/software-ventas-erp-crm.html
Modulo de Compras:
https://efactoryerp.com/soluciones/software-compras-erp-crm.html
Modulo de Inventarios:
https://efactoryerp.com/soluciones/software-control-de-inventarios-erp-crm.html
Modulo de Ventas:
https://efactoryerp.com/soluciones/software-punto-de-ventas-erp-crm.html
Modulo de Tesoreria:
https://efactoryerp.com/soluciones/software-tesoreria-erp-crm.html
Modulo de Produccion:
https://efactoryerp.com/soluciones/software-control-de-produccion-erp-crm.html
Modulo de Costos y Gastos de Importaciones:
https://efactoryerp.com/soluciones/software-importaciones-erp-crm.html
Soluciones Moviles:
https://efactoryerp.com/soluciones/software-para-moviles-erp-crm.html
Modulo de Inmobiliarios:
https://efactoryerp.com/soluciones/software-inmobiliario-erp-crm.html
SoftDoit (Buscador/Comparador de Software):
https://www.softwaredoit.com/mx/factory-soft-venezuela-c.a./factory-soft-venezuela-c.a..html
Manual de Generación de Nómina (v1.0) en eFactory Software ERP/CRM en la nube.
Ayudas online de eFactory Software ERP/CRM en la nube:
https://efactoryerp.com/ayudas-manuales-online-software-efactory-erp-crm-en-la-nube.html
Modulos de las Soluciones eFactory:
Modulo de Obras y Proyectos:
https://efactoryerp.com/soluciones/software-gestion-obras-proyectos-erp-crm.html
Modulo de Contabilidad:
https://efactoryerp.com/soluciones/software-contabilidad-erp-crm.html
Modulo de Nomina y RRHH:
https://efactoryerp.com/soluciones/software-rrhh-nomina-erp-crm.html
Modulo de CRM:
https://efactoryerp.com/soluciones/software-crm.html
Modulo de Ventas:
https://efactoryerp.com/soluciones/software-ventas-erp-crm.html
Modulo de Compras:
https://efactoryerp.com/soluciones/software-compras-erp-crm.html
Modulo de Inventarios:
https://efactoryerp.com/soluciones/software-control-de-inventarios-erp-crm.html
Modulo de Ventas:
https://efactoryerp.com/soluciones/software-punto-de-ventas-erp-crm.html
Modulo de Tesoreria:
https://efactoryerp.com/soluciones/software-tesoreria-erp-crm.html
Modulo de Produccion:
https://efactoryerp.com/soluciones/software-control-de-produccion-erp-crm.html
Modulo de Costos y Gastos de Importaciones:
https://efactoryerp.com/soluciones/software-importaciones-erp-crm.html
Soluciones Moviles:
https://efactoryerp.com/soluciones/software-para-moviles-erp-crm.html
Modulo de Inmobiliarios:
https://efactoryerp.com/soluciones/software-inmobiliario-erp-crm.html
SoftDoit (Buscador/Comparador de Software):
https://www.softwaredoit.com/mx/factory-soft-venezuela-c.a./factory-soft-venezuela-c.a..html
Today is Pentecost. Who is it that is here in front of you? (Wang Omma.) Jesus Christ and the substantial Holy Spirit, the only Begotten Daughter, Wang Omma, are both here. I am here because of Jesus's hope. Having no recourse but to go to the cross, he promised to return. Christianity began with the apostles, with their resurrection through the Holy Spirit at Pentecost.
Hoy es Pentecostés. ¿Quién es el que está aquí frente a vosotros? (Wang Omma.) Jesucristo y el Espíritu Santo sustancial, la única Hija Unigénita, Wang Omma, están ambos aquí. Estoy aquí por la esperanza de Jesús. No teniendo más remedio que ir a la cruz, prometió regresar. El cristianismo comenzó con los apóstoles, con su resurrección por medio del Espíritu Santo en Pentecostés.
2. %type
Con 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.
3. Explorando %type
Usted debe contar con el Script:
Script_curso_PLSQL_Basico_m2_01.sql.
Entonces encontrará el PL anónimo:
--Pl/SQl anónimo: Uso de %type
Cópielo a su herramienta, analicemos su construcción
y funcionamiento.
Ejecútelo
4. --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: 01
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 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;
5. 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?
6. 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;
7. Practicando un poco
Construya 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”.
8. Constantes
Al 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:
Analice el PL.
Ejecútelo.
Realizando cálculos empleando constantes
9. --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: 01
declare
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;
10. Tareas del Módulo 2
1.
2.
3.
4.
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.
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.
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.
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’.
11. Tabla de Valoración para la tarea
Elemento Entregado
Punteo
PL anónimo 1
25
PL anónimo 2
25
PL anónimo 3
25
PL anónimo 2
25