Você está na página 1de 8

Universidad Austral de Chile Facultad de Ciencias Econmicas y Administrativas Ingeniera Comercial

Sistema de Informacin Empresarial

Gua de laboratorio N 3 PLSQL Developer

Asignatura: Sistema de informacin empresarial Profesor: Cristian Salazar Profesor Ayudante: Jos Luis Carrasco Estudiante: Mnica Navarrete

Junio 2012 - VALDIVIA

Actividades: 1.- Se solicita obtener mediante una funcin el resultado de la multiplicacin 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 funcin el resultado de la divisin 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 parmetros en una funcin, y desarrolle una funcin 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 prstamo por un tiempo igual o superior a 20 das. Realice una funcin 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 das pueda ser variable, esto es pasndolo como parmetro a la funcin.
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 parmetro a la funcin el nmero de das a evaluar y el valor por da 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 (Funcin) es un conjunto de instrucciones que tienen un objetivo en particular y permiten retornar un resultado, pueden ser ejecutadas desde cualquier parte del cdigo. 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, mtodos o definiciones paso a paso, que se utilizan para hacer algo o resolver un problema. En la programacin 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 ms rpida. 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 parmetros de Entrada? 2. Necesitas que el proceso te retorne varios parmetros 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 artculos de INSERT, UPDATE y DELETE que se encuentran en Definiciones al final de este documento. 10.- Realice un procedimiento (PROCEDURE) que reciba como parmetro el Rut del Estudiante, el Cdigo del Libro y el Rut del Funcionario. Este procedimiento debe ingresar un prstamo, considerando que todos los libros se prestan por 3 das. (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 parmetros (das a evaluar y valor por da de atraso en pesos chilenos) y muestre 3 parmetros de salida (deuda total del alumnado en pesos chilenos, en euros y en dlares).
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;

Você também pode gostar