: Karoll Elena Cruz Díaz.
Xaviera Zúñiga Docmac : José Luis Carrasco V. : Sistemas de Información Empresarial
15 de junio de 2012.
Laboratorio de procedimientos y funciones. 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;
Al testear 8*9 el resultado arroja lo correcto 72
2.- Se solicita obtener mediante una funci贸n el resultado de la divisi贸n de 4 por 55. create or replace function cuatrodivididoveinticinco return number is Resultado number; begin Resultado := 4 / 25; return Resultado; end cuatrodivididoveinticinco;
Se corrobora el resultado correcto de la funci贸n 4/25= 0.16
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 number , y number) return number is resultado number; begin resultado := x+y; return resultado; end xmasy;
Para comprobar el resultado de x + y, se introduce la suma de cualquier numero y debiera arrojar el resultado de dicha suma en este caso se comprob贸 con 5+2 =7
b) F(X,Y,Z) = (X+Y)*Z create or replace function xmasyporz ( x number , y number, z number) return number is resultado number; begin resultado := (x+y)*z; return resultado; end xmasyporz;
En este caso para testear se remplaz贸 X por 2 Y por 6 Z por 4 lo que dio el resultado de 32.
c) F(W,X,Y,Z) = W(X-1)(Y-Z)(Z+2) create or replace function wxyz(w number, x number , y number, z number) return number is resultado number; begin resultado := W*(X-1)*(Y-Z)*(Z+2) ; return resultado; end wxyz;
Para comprobar tambiĂŠn se remplazaron los valores W por 6, X por 4, Z por 2 e Y por 1 lo que dio el resultado de 54.
4.- Investigue el uso de la sentencia “INTO”. INTO (cláusula de Transact-SQL), por medio de ésta cláusula se crea una nueva tabla en el grupo de archivos predeterminados e inserta las filas resultantes de la consulta en ella. Es posible usar esta sentencia de dos maneras Select INTO e Insert INTO. Select INTO, es una operación de registro mínimo, y dentro de ese tipo de operaciones es una de operación de copia masiva o Bulk copy. De este modo se ejecutará escribiendo en el LOG de SQL Server el mínimo de información necesaria, dependiendo del modo de recuperación que tenga configurada la base de destino, consiguiendo de esta forma mejorar el rendimiento sensiblemente. Insert INTO, por el contrario no es una operación de registro mínimo, y se ejecuta creando un registro completo en el LOG de SQL Server , independiente del modo de recuperación que se haya usado.
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.
select count (*) as prestamos From prestamo p Where ( trunc ( sysdate) - p.fecha_e) >= 20
Arroja el resultado de 291
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 morosidad (xvalor in number) return number is Resultado number; Begin Select count (*) as morosidad_excesiva Into resultado From prestamo p Where trunc(sysdate) - p.fecha_e >= xvalor; return Resultado; end morosidad;
Al testear, introducimos el valor de 30 días donde los estudiantes no han hecho entrega del prestamo, entonces el numero de prestamos con morosidad excesiva para este valor es de 97
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 morosidad (n_dias in number, valor_deuda in number) return number is Resultado number; Begin Select sum (trunc(sysdate) - p.fecha_e )* valor_deuda as morosidad_excesiva Into resultado From prestamo p Where trunc(sysdate) - p.fecha_e >= n_dias; return Resultado; end morosidad;
Al testear el resultado introducimos n_dias 20 y en valor_deuda 100 y el resultado sea 851700.
8.- Investigue cual es la diferencia entre FUNCTION y PROCEDURE en PLSQL. FUNCTION son la opción para hacer ciertas operaciones en SQL Server. No se pude usar para actualizar, eliminar o agregar registros a una base de datos. Sólo se puede usar para seleccionar un registro. En SQL PROCEDURE es almacenado como un programa miniture. Puede ser tan simple como una instrucción para seleccionar, o tan complejo como un guion largo que añade, elimina, actualiza y/o lee los datos de varias tablas en una base de datos.
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 ejer10 (rut_est in number, cod_libro in number, rut_func in number) is Begin Insert into prestamo (rut_est, cod_libro, rut_func, fecha_p, fecha_e) Values ( rut_est, cod_libro, rut_func, sysdate, trunc ( sysdate) + 3); End ejer10;
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 ejer11 (rut_est in number, cod_libro in number) is Begin delete from prestamo where rut_est = '74479936' and cod_libro = '860'; end ejer11;
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 ejer12 ( x in number, valor in number, resultado out number, y out number, z out number ) is begin select sum (trunc(sysdate) - Fecha_e) * valor into resultado from prestamo where (trunc(sysdate) - Fecha_e) >= x; y:= resultado / 500; z:= resultado / 630; end ejer12;