1. Universidad Austral de Chile
Facultad de Ciencias Económicas y Administrativas
Instituto de Administración
Escuela de Ingeniería Comercial
ADMI 273
Tarea N° 3.-
Curso: Sistema de Información Empresarial
Profesor: Cristian Salazar
Ayudante: José Luis Daniel Carrasco
Integrante:
Diego Nauto C.
Valdivia, 16 de Junio de 2012.
2. ADMI273-ADMI273 Universidad Austral de Chile.
1.- Se solicita obtener mediante una función el resultado de la multiplicación de 8 por 9.
create or replace function uno return number is
Resultado number;
begin
Resultado := 8*9;
return Resultado;
end uno;
2.- Se solicita obtener mediante una función el resultado de la división de 4 por 55.
create or replace function dos return number is
Resultado number;
begin
Resultado := 4*55;
return Resultado;
end dos;
3.- Investigar el uso de parámetros en una función, y desarrolle una función para cada
uno de los siguientes ejercicios:
F(X,Y) = X+Y
create or replace function FXY(valor1 in number, Valor2 in
number) return number is
Result number;
begin
Result := valor1 + Valor2;
return Result;
end FXY;
F(X,Y,Z) = (X+Y)*Z
create or replace function FXYZ(valor1 in number, Valor2 in
number, Valor3 in number) return number is
Result number;
begin
Result := (valor1 + Valor2)* Valor3;
return Result;
end FXYZ;
3. F(W,X,Y,Z) = W(X-1)(Y-Z)(Z+2)
create or replace function FWXYZ(valor1 in number, Valor2 in
number, Valor3 in number, Valor4 in number) return number is
Result number;
begin
Result := Valor4 * (valor1 - 1 )*(Valor2 - Valor3) * (Valor3 +
2);
return Result;
end FWXYZ;
4.- Investigue el uso de la sentencia “INTO”.
SELECT INTO crea una nueva tabla en el grupo de archivos predeterminados e inserta las
filas resultantes de la consulta en ella.
La New_table especifica el nombre de una nueva tabla que se va a crear en función de las
columnas de la lista de selección y de las filas elegidas desde el origen de datos. Este
formato se determina mediante la evaluación de las expresiones de la lista de selección. Las
columnas se crean en el orden que especifica la lista de selección. Cada columna de tiene el
mismo nombre, tipo de datos, nulabilidad y valor que la expresión correspondiente de la
lista de selección.
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 prestamos con Morosidad Excesiva.
create or replace function Contador return number is Result
number;
begin
select count(trunc(sysdate) - trunc(p.fecha_e)) as Mexcesivos
into Result
from prestamo p
where (trunc(sysdate) - trunc(p.fecha_e)) >= 20;
return result;
end Contador;
4. 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 Contador1 (Valor1 in number) return
number is Result number;
begin
select count(trunc(sysdate) - trunc(p.fecha_e)) as Mexcesivos
into Result
from prestamo p
where (trunc(sysdate) - trunc(p.fecha_e)) >= Valor1;
return result;
end Contador1;
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 Contador2 (DIAS in number,MULTA in
number) return number is Result number;
begin
select sum(trunc(sysdate) - trunc(p.fecha_e))* MULTA as
Mexcesivos
into Result
from prestamo p
where (trunc(sysdate) - trunc(p.fecha_e)) >= DIAS;
return Result;
end Contador2;
8.- Investigue cual es la diferencia entre FUNCTION y PROCEDURE en PLSQL.
Los procedimientos son tradicionalmente el workhorse del mundo de la codificación y las
funciones son tradicionalmente los pedazos más pequeños, más específicos del código. Los
procedimientos o funciones PLSQL son dinámicos ya que admiten parámetros que les
pueden ser pasados antes de su ejecución. Por lo tanto, un procedimiento o función puede
realizar diferentes tareas dependiendo de los parámetros que le hayan pasado.
Los procedimientos PL/SQL son subprogramas compuestos por un conjunto de sentencias
SQL. Funciones y procedimientos PL/SQL no son muy diferentes. Un procedimiento o
función está constituido por un conjunto de sentencias SQL y PL/SQL lógicamente agrupados
para realizar una tarea específica. Los procedimientos y funciones almacenados constituyen
un bloque de código PLSQL que ha sido compilado y almacenado en las tablas del sistema de
la base de datos Oracle.
5. 9.- Lea los artículos de INSERT, UPDATE y DELETE que se encuentran en Definiciones al
final de este documento.
LEIDOS ARTICULOS INSERT-UPDATE-DELETE.
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 procedimiento debe ingresar
un préstamo, considerando que todos los libros se prestan por 3 días. (Usar INSERT y
SYSDATE)
create or replace procedure prueba (rut_est1 in number,
cod_libro1 in number, rut_func1 in number) is
begin
insert into prestamo (rut_est, rut_func, cod_libro, fecha_p,
fecha_e)
values (rut_est1, rut_func1, cod_libro1, trunc(Sysdate),
(trunc(sysdate) + 3));
commit;
end prueba;
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 entrega (rut_est1 in number,
cod_libro1 in number, x out number ) is
begin
delete from PRESTAMO
where rut_est1 = rut_est
and cod_libro1 = cod_libro;
commit;
x:=1;
end entrega;
6. 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 Contador18 (DIAS in number,
MULTA in number,
pesos out number,
euro out number,
dollar out number) is
begin
select sum(trunc(sysdate) - trunc(p.fecha_e)) * MULTA,
round(sum(trunc(sysdate) - trunc(p.fecha_e)) * MULTA
/ 500),
round(sum(trunc(sysdate) - trunc(p.fecha_e)) * MULTA
/ 700)
into pesos, euro, dollar
from prestamo p
where (trunc(sysdate) - trunc(p.fecha_e)) >= DIAS;
--aqui calcule atrasos en pesos dollar y euro
end Contador18;