Este documento presenta 12 ejercicios sobre el uso de funciones y procedimientos PL/SQL. Los ejercicios cubren temas como funciones con parámetros, la sentencia INTO, funciones para calcular préstamos morosos basados en días, e inserción, actualización y eliminación de datos usando las sentencias INSERT, UPDATE y DELETE.
1. UNIVERSIDAD AUSTRAL DE CHILE
FACULTAD DE CIENCIAS ECONÓMICAS
Y ADMINISTRATIVAS
Sistemas de Información Empresarial
(ADMI273)
Laboratorio 3
Consultas PL/SQL-Oracle
Alumnos: Alfredo Torres
Alejandro Vesperinas
Profesor: Cristian Salazar C.
Ayudante: José Luis Carrasco V.
15 de Junio de 2012
8. 4.- Investigue el uso de la sentencia “INTO”.
La cláusula del Oracle PL/SQL “INTO” se usa en bloques PL/SQL para obtener los
resultados de la consulta SELECT en una variable local. Las columnas seleccionadas en la
consulta deben ser devueltas en las variables locales, que deben ser compatibles con las
columnas de tipo de datos. También se utiliza en el archivo ejecutable (BEGIN...END)
sección de un bloque PL/SQL.
En el uso por defecto la cláusula [SELECT...INTO], la sentencia recupera una o
más columnas de una sola fila. En el uso a granel [SELECT...BULK COLLECT INTO], la
sentencia recupera un conjunto de resultados completo en una sola operación.
Por defecto, la declaración [SELECT...INTO] sólo puede devolver una sola fila. Si
se devuelve más de una fila, PL/SQL produce la excepción predefinida
TOO_MANY_ROWS (SQL Error-02112).
Ejemplo de uso:
DECLARE
L_EMPNO NUMBER;
L_ENAME VARCHAR2(1000);
L_DEPTNO NUMBER;
L_SALARY NUMBER;
BEGIN
SELECT EMPNO, ENAME, DEPTNO, SALARY
INTO L_EMPNO, L_ENAME, L_DEPTNO, L_SALARY
FROM EMPLOYEES
WHERE EMPNO=100;
END;
9. 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.
10. 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.
11. 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.
12. 8.- Investigue cual es la diferencia entre FUNCTION y PROCEDURE en PLSQL.
La única diferencia entre procedimientos y funciones en PL/SQL es que las
funciones siempre devuelven un valor único, mientras que los procedimientos no devuelven
un valor a la persona que llama.
Ejemplo:
CREATE OR REPLACE PROCEDURE my_proc
(p_name IN VARCHAR2 := 'John') as begin ... end
CREATE OR REPLACE FUNCTION my_func
(p_name IN VARCHAR2 := 'John') return varchar2 as begin ... end
Observe cómo la función tiene una cláusula de retorno entre la lista de parámetros y la
palabra clave "como". Esto significa que se espera que tenga la última instrucción dentro
del cuerpo de la función de leer algo como:
return(my_varchar2_local_variable);
Donde my_varchar2_local_variable es cierto varchar2 que debería ser devuelto por esta
función.
13. 9.- Lea los artículos de INSERT, UPDATE y DELETE que se encuentran en Definiciones
al final de este documento.
14. 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)
15. 11.- Realice un procedimiento que entregue un libro, esto es ingresando el Rut del
Estudiante y el Libro respectivamente (Usar DELETE).
16. 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).