PRÁCTICA PL/SQL – 456
1. Crear un bloque PL que acepte un número como entrada, elija a los N empleados con el
sueldo más BAJO de la tabla TEMPLE y los inserte dentro de la tabla “OTRA” (insertar
nombre y salario), además, si estos empleados llevan contratados en la empresa más de 25
años, se les debe INCREMENTAR su comisión en un 10% de su salario (Cursores)
SI SALARIO ES 1000 Y COMISIÓN ES 230 --> COMISIÓN= 330
SI SALARIO ES 1000 Y COMISIÓN ES NULL --> COMISIÓN =100
2. Crear un programa que muestre los nombres de los empleados de la tabla TEMPLE que
trabajan un departamento introducido por teclado. (Cursores)
3. A partir de los siguientes tres ejemplos de cursores, completa el programa para que se
muestre la información recuperada con o sin registros, según se indica, usando en cada
ejemplo estructuras repetitivas distintas (podemos usar LOOP, WHILE LOOP Y FOR LOOP
en este orden). En el AulaVirtual está la tabla provincias con algunos registros: (Cursores)
CURSOR 1 - SIN USAR REGISTRO
------------------------------
DECLARE
CURSOR MI_CURSOR IS
SELECT PROVINCIA, DESCRIPCION, PREFIJO
FROM PROVINCIAS;
BEGIN
END;
/
EJEMPLO 2 - CON REGISTRO
---------------
DECLARE
CURSOR MI_CURSOR IS
SELECT *
FROM PROVINCIAS;
BEGIN
END;
/
EJEMPLO 3 - CON REGISTRO
-------------
DECLARE
CURSOR MI_CURSOR IS
SELECT PROVINCIA, DESCRIPCION
FROM PROVINCIAS;
BEGIN
END;
/
4. Genera un informe como el siguiente para todos los empleados con salario inferior a 2000
de la tabla EMP. (Cursores)
5. Crear un bloque PL que permita borrar a los empleados que no tienen comisión y los que la
tienen dividirla entre dos. Se utilizará al crear el cursor, la cláusula FOR UPDATE y
WHERE CURRENT OF. (Cursores)
6. Realizar un programa que muestre los códigos de los empleados y cuente aquellos cuya
comisión es nula. Se utilizará la tabla TEMPLE. (Cursores)
7. Diseñar un bloque PL que muestre el nombre del departamento y el número de
trabajadores que tiene cada uno. (Cursores)
8. Codificar un programa que visualice los dos empleados que ganan menos de cada oficio.
(Cursores)
9. Escribir un bloque PL que reciba una cadena y visualice el apellido y el número de
empleado de todos los empleados cuyo apellido contenga la cadena especificada. Al
finalizar se visualizará el número de empleados mostrados. (Cursores)
10. Escribir un bloque PL que permita incrementar el salario un 5% a un empleado introducido
por teclado. Teniendo en cuenta que sí la consulta no devuelve ninguna fila se visualizará
un mensaje ‘Error. No encontrado’ y sí el salario es cero otro mensaje que diga ‘Error.
Salario nulo’. (Excepciones)
11. Diseñar un bloque PL que permita calcular el salario de los empleados de los
departamentos 111 y 112 de la tabla TEMPLE mediante un cursor y un registro de todos los
empleados. Si el número de hijos es igual a cero se tratará esta excepción mediante un
bloque interno que evite la salida general del programa. (Excepciones)
12. Diseñar un bloque PL que incremente 50€ la comisión a un trabajador introducido por
teclado, teniendo en cuenta que si esta fuese nula se lanzará una Excepción que inserte en
una tabla temporal un registro con el nº de empleado y la descripción “COMISIÓN NULA”
y si el empleado no existe, el registro se insertará con el nº de empleado y la descripción
“EMPLEADO INEXISTENTE” (Excepciones)