Anda di halaman 1dari 3

Ejercicios

Usuario HR
Tablas pertenecientes a este mismo esquema

1. Cree y llame a la funcin Q_JOB para devolver el nombre de un puesto de trabajo.


a. Cree una funcin llamada Q_JOB para devolver el nombre de un puesto de trabajo a una
variable del host.
b. Compile el cdigo; cree una variable del host G_TITLE y llame a la funcin con el identificador de
puesto de trabajo SA_REP. Consulte la variable del host para ver los resultados.

2. Cree una funcin denominada ANNUAL_COMP para devolver el sueldo anual aceptando dos
parmetros: el sueldo mensual del empleado y la comisin. La funcin debera tratar valores NULL.
a. Cree y llame a la funcin ANNUAL_COMP, transfiriendo valores para la comisin y el sueldo
mensual. Cualquiera de los dos valores que se han transferido, o los dos, puede ser NULL, pero la
funcin debera seguir devolviendo el sueldo anual, que no es NULL. El sueldo anual se define por
medio de la frmula bsica: (sueldo*12) + (porcentaje_comisin*sueldo*12) b. Utilice la funcin
en una sentencia SELECT sobre la tabla EMPLOYEES del departamento 80.
3. Slo est permitido realizar cambios en las tablas durante las horas de oficina normales, entre
las 8:45 a.m y las 5:30 p.m., de lunes a viernes. Cree un procedimiento almacenado llamado
SECURE_DML que evite que la sentencia DML se ejecute fuera de las horas normales de oficina y
que devuelva el mensaje, "Solo puedes hacer cambios durante horas de oficina.

4. a. Cree un disparador de sentencias en la tabla JOBS que llame al procedimiento anterior. b.


Pruebe el procedimiento modificando temporalmente las horas de dicho procedimiento e
intentando insertar un nuevo registro en la tabla JOBS. (Ejemplo: reemplace 08:45 por 16:45. Este
intento devuelve un mensaje de error).

5. Los empleados deberan recibir un aumento de sueldo automticamente si se aumenta el sueldo


mnimo de un puesto de trabajo. Implemente este requisito por medio de un disparador en la tabla
JOBS.

6. Cree un bloque PL/SQL que calcule la comisin de un empleado determinado basndose en el


sueldo de dicho empleado.
a. Si el sueldo del empleado es menor de $5.000, muestre la bonificacin del empleado como un
10% del sueldo.
b. Si el sueldo del empleado est entre $5.000 y $10.000, muestre la bonificacin del empleado
como un 15% del sueldo.
c. Si el sueldo del empleado supera los $10.000, muestre la bonificacin del empleado como un
20% del sueldo.
d. Si el sueldo del empleado es NULL, muestre la bonificacin del empleado como 0.
e. Pruebe el bloque PL/SQL en cada caso utilizando los siguientes casos de prueba y compruebe
cada bonificacin.
7. Cree un bloque annimo para hacer que aparezca la frase Mi bloque PL/SQL funciona en la
pantalla.

8. En un bucle, utilice un cursor para recuperar el nmero del departamento y el nombre del
departamento de la tabla DEPARTMENTS de aquellos departamentos cuyo identificador
(DEPARTMENT_ID) sea menor de 100. Transfiera el nmero del departamento a otro cursor para
recuperar de la tabla EMPLOYEES los apellidos, los puestos, las fechas de contratacin y los sueldos
de los empleados cuyo identificador (EMPLOYEE_ID) sea menor de 120 y que trabajen en ese
departamento.

Anda mungkin juga menyukai