Page 1

Sistemas de Información Empresarial

“Laboratorio N°4”

Daniela Oyarzún F. Ruth Zumelzu VALDIVIA – CHILE JUNIO 2012


1.- Se solicita obtener mediante una funci贸n el resultado de la multiplicaci贸n de 8 por 9. create or replace function ochopornueve return number is Resultado number; begin Resultado:= 8 * 9; return Resultado; end ochopornueve; begin :result := ochopornueve; end;

2.- Se solicita obtener mediante una funci贸n el resultado de la divisi贸n de 4 por 55. create or replace function cuatrodivcinuentaycinco Resultado number ; begin Resultado:=4/55; return Resultado; end cuatrodivcinuentaycinco; begin :result := cuatrodivcinuentaycinco; end;

return number is


3.- Investigar el uso de par谩metros en una funci贸n, y desarrolle una funci贸n para cada uno de los siguientes ejercicios: a) F(X,Y) = X+Y create or replace function xmasy(x integer, y integer) return integer is Resultado number ; begin Resultado:= x+y; return Resultado; end xmasy; begin :result := xmasy(x => :x, y => :y); end;

b) F(X,Y,Z) = (X+Y)*Z create or replace function xmasyporz(x integer, y integer, z integ er) r etu rn integer is Resultado integer; begin Resultado:=(x+y)*z; return Resultado; end xmasyporz; begin :result := xmasyporz(x => :x, y => :y, z => :z); end;


c) F(W,X,Y,Z) = W(X-1)(Y-Z)(Z+2) create or replace function wxyz(w integer,x integer, y integer, z integer) return number is Resultado number; begin Resultado:=W*(X-1)*(Y-Z)*(Z+2); return Resultado; end wxyz; begin :result := wxyz( w => :w, x => :x, y => :y, z => :z); end;

4.- Investigue el uso de la sentencia “INTO”. Indica la tabla a la cual se le asignaran ciertos valores, por ejemplo si en una base de datos quiero ingresar el rut y nombre de una personar, se podría hacer de la siguiente forma: INSERT INTO Nombre_tabla(rut, nombre) VALUES ('16.235.643-8','Juan Pérez');


5.- Se define que la morosidad excesiva es referida a cuando un estudiante no ha hecho entrega de un préstamo por un tiempo igual o superior a 20 días. Realice una función que entregue el N° de préstamos con Morosidad Excesiva. create or replace function MorosidadExcesiva return number is Resultado number; begin select count(*) into resultado from prestamo p where (trunc(sysdate) - p.fecha_e) >= 20; return resultado; end MorosidadExcesiva; begin :result := morosidadexcesiva; end;

6.- Desarrolle lo mismo que en el ejercicio 5, solo que esta vez el valor de 20 días pueda ser variable, esto es pasándolo como parámetro a la función. create or replace function MorosidadExcesivaVar(dias number) return number is Result number; begin select count(*) int o Res ult from prestamo p, estudiantes e where e.rut_est = p.rut_est and (trunc(sysdate) - (p.fecha_e)) >=dias; return Result; end MorosidadExcesivaVar; begin :result := morosidadexcesivavar(dias => :dias); end;


7.- Se solicita pasar por parámetro a la función el número de días a evaluar y el valor por día de atraso. Se debe entregar el valor total de las deudas adquiridas por todo el alumnado. create or replace function montomorosidad(dias number, monto number) return number is Result number; begin select monto*count(*) int o Res ult from prestamo p, estudiantes e where e.rut_est = p.rut_est and (trunc(sysdate) - (p.fecha_e)) >= dias; return Result; end montomorosidad; begin :result := montomorosidad(dias => :dias, monto => :monto); end ;

8.- Investigue cual es la diferencia entre FUNCTION y PROCEDURE en PLSQL. La principal diferencia entre Function y Procedure en PLSQL es que la función siempre devuelve un valor, en cambio el procedimiento siempre necesita parámetros de entrada. Para saber si utilizar Function o Procedure lo principal es analizar si se necesitarán parámetros de entrada y salida (Procedure) o si se necesita obtener un solo resultado de salida (Function). 9.- Lea los artículos de INSERT, UPDATE y DELETE que se encuentran en Definiciones al final de este documento.


10.- Realice un procedimiento (PROCEDURE) que reciba como parámetro el Rut del Estudiante, el Código del Libro y el Rut del Funcionario. Este procedimie nto debe ingresar un préstamo, considerando que todos los libros se prestan por 3 días. (Usar INSERT y SYSDATE) create or replace procedure iprestamo(rut_e in float, rut_f in float , cod_l in number) is begin insert into PRESTAMO (rut_est,rut_func, cod_libro, FECHA_P,FECHA_E) values (rut_e, trunc(sysdate)+2);

rut_f,cod_l,

trunc(sysdate),

end iprestamo; begin iprestamo(rut_e => :rut_e, rut_f => :rut_f, cod_l => :cod_l); end;

11.- Realice un procedimiento que entregue un libro, esto es ingresando el Rut del Estudiante y el Libro respectivamente (Usar DELETE). create or replace procedure entregalibro(rut in number, libro in number) is begin DELETE FROM prestamo where cod_libro = libro and rut_est = rut; end entregalibro; begin entregalibro(rut => :rut, libro => :libro); end;


12.- Realizar un procedimiento que realice lo mismo que el ejercicio 7, pero que se le entreguen 2 parámetros (días a evaluar y valor por día de atraso en pesos chilenos) y muestre 3 parámetros de salida (deuda total del alumnado en pesos chilenos, en euros y en dólares). create or replace procedure ejer1 2( dia s

in number, multa in number,

Multa_Acumulada_clp out number, Multa_Acumulada_usd out number, Multa_Acumulada_eur out number) is begin select multa * count(*), multa * count(*) / 504, /* Precio del Dólar al día 13/06/2012 */ multa * count(*) / 633.56 /* Precio del Euro al día 13/06/2012 */ into Multa_Acumulada_clp, Multa_Acumulada_usd, Multa_Acumulada_eur from prestamo p, estudiantes e where e.rut_est = p.rut_est and (trunc(sysdate) - (p.fecha_e)) >= dias; end ejer12; begin ejer12(dias => :dias, multa => :multa, multa_acumulada_clp => :multa_acumulada_clp, multa_acumulada_usd => :multa_acumulada_usd, multa_acumulada_eur => :multa_acumulada_eur); end;

Laboratorio 4  

Laboratorio numero 4