Issuu on Google+

Universidad Austral de Chile Facultad de Ciencias Económicas y Administrativas Instituto de Administración Escuela de Ingeniería Comercial ADMI 273

Ayudantía 4 de Junio

Curso: Sistema de Información Empresarial Profesor: Cristian Salazar Ayudante: Jose Luis Carrasco Integrante: Carlos Mancilla Karina Espinoza E.

Valdivia, 16 de Mayo de 2012.


Ejemplo …………………………. create or replace function dosmasdos return number is Resultado number; begin Resultado := 2+2; return Resultado; end dosmasdos;


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: a) F(X,Y) = X+Y create Result begin Result return

or replace function FXY(valor1 in number, Valor2 in number) return number is number; := valor1 + Valor2; Result;


end FXY;

b) 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;


c) 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;


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.

Conceptualmente, quizá la mayor diferencia sea que un procedimiento almacenado está orientado a cubrir una funcionalidad completa y una función está orientada para cubrir una parte. Así, el procedimiento se ejecuta independientemente y la función se llama desde una consulta que puede involucrar más tablas, funciones, etc., siendo esta seguramente su principal ventaja. Otra diferencia está en que una función siempre devuelve algo (una tabla), mientras que un procedimiento almacenado puede devolver ambas cosas o ninguna. Una función tiene ciertas limitaciones (bueno, bastantes), operaciones que no puedes realizar, mientras que en un procedimiento almacenado puedes hacer casi cualquier cosa. 9.- Lea los artículos de INSERT, UPDATE y DELETE que se encuentran en Definiciones al final de este documento. Leidoss………………


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;


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;


ayudantia 4 de junio