Universidad Austral de Chile Facultad de Ciencias Económicas y Administrativas Ingeniería Comercial

Sistema de Información Empresarial

Guía de laboratorio N° 3 PLSQL Developer

Asignatura: Sistema de información empresarial Profesor: Cristian Salazar Profesor Ayudante: José Luis Carrasco Estudiante: Mónica Navarrete

Junio 2012 - VALDIVIA

Actividades: 1.- Se solicita obtener mediante una función el resultado de la multiplicación de 8 por 9.
create or replace function p1 return number Result number; begin Result :=8*9; return Result; end p1; is

2.- Se solicita obtener mediante una función el resultado de la división de 4 por 55.
create or replace function p2 return number is Result number; begin Result :=4/55; return Result; end p2;

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 p3 (parametro1 number, parametro2 number) return number Result number; begin result := parametro1 + parametro2; is

return Result; end p3;

b) F(X,Y,Z) = (X+Y)*Z
create or replace function p4(x number, y number, z number) return number Result number ; begin result := (x+y)*z; return Result; end p4; is

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

end p5;

4.- Investigue el uso de la sentencia “INTO”. INTO indica donde dejar el resultado, o alguna orden programada. 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 preg5 return number is Result number; begin select count(*) into Result from prestamo p where (trunc(sysdate) - p.fecha_e) >= 20; return Result; end preg5;

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 preg6(dias in number) return number is Result number; begin select count(*) into Result

from prestamo p where (trunc(sysdate) - p.fecha_e) >= dias; return(Result); end preg6;

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 preg7(dias in number, deuda in number) return number is Result number; begin select count(*)*deuda into Result from prestamo p where (trunc(sysdate) - p.fecha_e) >= dias; return(Result); end preg7;

8.- Investigue cual es la diferencia entre FUNCTION y PROCEDURE en PLSQL. Una Function (Función) es un conjunto de instrucciones que tienen un objetivo en particular y permiten retornar un resultado, pueden ser ejecutadas desde cualquier parte del código. Una Function en Oracle a diferencia de los Procedures en Oracle siempre devuelve un valor como respuesta.

Para determinar si debes utilizar una Function en Oracle tienes que responder de forma afirmativa a las siguientes preguntas: 1. ¿Lo que debo construir será usado de forma masiva por otros procesos? 2. ¿Necesito obtener siempre un solo resultado? Por ejemplo, si te das cuenta que en varios procesos que debes desarrollar en tu sistema siempre necesitas obtener la edad de un empleado para poder determinar ciertas acciones, las respuestas a las preguntas 1 y 2 es SI, por lo tanto debes construir una Function en Oracle. Un Procedure (Procedimiento) es el conjunto de etapas, métodos o definiciones paso a paso, que se utilizan para hacer algo o resolver un problema. En la programación estructurada es un subprograma o parte de un programa principal, para nuestro caso se denominan Packages en Oracle. El concepto de Stored Procedure (Procedimiento Almacenado) se debe a que el programa se guarda o almacena en el motor de Base Datos de Oracle, esto permite que cuando el procedimiento sea invocado o llamado este se ejecute directamente en el Servidor de la Base Datos de Oracle logrando así una respuesta mucho más rápida. Para determinar si debes utilizar Procedures en Oracle tienes que responder de forma afirmativa a las siguientes preguntas: 1. ¿El proceso que debes construir tendrá parámetros de Entrada? 2. ¿Necesitas que el proceso te retorne varios parámetros de Salida? Por ejemplo, si necesitas un proceso que te permita obtener los datos de un empleado en particular, las respuestas a las preguntas 1 y 2 es SI, por lo tanto debes construir Procedures en Oracle. Fuente: http://packagesenoracle.wordpress.com/2010/11/01/cuando-debo-construir-proceduresy-function-en-oracle/ 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 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 preg10(rut_est in number, rut_func in number, cod_libro in number) is begin insert into prestamo (rut_est, rut_func, cod_libro, fecha_p, fecha_e) values (rut_est, rut_func, cod_libro, trunc(sysdate), trunc(sysdate)+ 3); commit; end preg10;

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 preg11(rut_est in number, cod_libro in number) is begin delete from prestamo where rut_est = rut_est and cod_libro = cod_libro; commit; end preg11;

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 preg121(dias in number, deuda in number, dol out number, eur out number, pesos out number) is begin select sum(trunc(sysdate) - trunc(p.fecha_e))* deuda, round ((sum(trunc(sysdate) trunc(p.fecha_e))*deuda)/ 500), round ((sum(trunc(sysdate) - trunc(p.fecha_e))*deuda)/ 600) into pesos, dol, eur from prestamo p where (trunc(sysdate) - trunc(p.fecha_e)) >= dias; end preg121;

Sign up to vote on this title
UsefulNot useful