0% encontró este documento útil (0 votos)
603 vistas6 páginas

Ejercicios PLSQL

Este documento presenta una introducción a los fundamentos de PL/SQL, incluyendo cursores, excepciones, procedimientos, funciones y paquetes. Propone varios ejercicios para practicar el uso de cada uno de estos conceptos mediante ejemplos como actualizar datos en tablas, calcular sumas y promedios, e implementar procedimientos y funciones.

Cargado por

jsmadsl
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
603 vistas6 páginas

Ejercicios PLSQL

Este documento presenta una introducción a los fundamentos de PL/SQL, incluyendo cursores, excepciones, procedimientos, funciones y paquetes. Propone varios ejercicios para practicar el uso de cada uno de estos conceptos mediante ejemplos como actualizar datos en tablas, calcular sumas y promedios, e implementar procedimientos y funciones.

Cargado por

jsmadsl
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 6

Ejercicios PLSQL

ndice

Fundamentos ............................................................................................. 2
Cursores .................................................................................................... 2
Excepciones ............................................................................................... 2
Procedimientos ........................................................................................... 3
Funciones .................................................................................................. 4
Paquetes ................................................................................................... 4
Triggers ..................................................................................................... 5

1
Fundamentos
- Calcular la diferencia entre el nmero de registros de dos tablas (en
abstracto)
- Del esquema de scott deduzca si el departamento SALES tienen su
correspondiente jefe ('MANAGER'). Si lo encuentra imprima su nombre por
pantalla
- Pida al usuario un id de empleado. Si existe dicho id, imprima por pantalla
su nombre. En caso contrario, imprima un mensaje por pantalla 'No existe el
ID xxxx' siendo el xxxx el id introducido

Cursores
- Crear una tabla vendedores, compuesta por tres columnas: n empleado,
salario y comisin. Hacer un programa en PL/SQL que busque a todos los
empleados de la tabla emp que tengan comisin no nula e insertarlos en la
tabla creada anteriormente.
- Actualizar los vendedores con una comisin mayor que 350$ con un
incremento del 15% de su salario. Si la operacin afecta a ms de tres
empleados, deshacer la transaccin, en cualquier otro caso validar la
transaccin. Introducir en la tabla temp (Tabla con dos columnas: una
numrica y otra de caracteres) la operacin que se ha realizado.
- Actualizar el trabajo de un empleado a director a todos los trabajadores
cuyo salario sea mayor que 2000$. Almacenar el nmero de empleados
actualizados por la operacin en temp. Si los afectados son ms de cinco
personas, borrar los empleados cuyo salario sea mayor de 3000$, si los
afectados son ms de tres personas, deshacer la transaccin de cualquier
cambio. En cualquier otro caso validar la transaccin.
- Insertar 10 o ms filas en la tabla temp, donde en la primera columna se
insertar un ndice de nmero secuencial (1,2,3...) y en la columna de tipo
texto, un comentario indicando si el nmero generado es par o impar.

- Crear una tabla MAS_ PAGADOS, compuesta de dos columnas, nombre y


salario. Insertar en esa tabla los cinco empleados mejor pagados de la tabla
emp.
- Realizar un bloque PL/SQL en el cual determine el total de las ganancias de
los empleados (salario y comisin) para el departamento 20. Tambin
calcular cuantos empleados tienen su salario por encima de 2000$ y
tambin la cantidad de aquellos empleados cuya comisin es mayor que su
salario.
- Calcular por medio de un bloque PL/SQL annimo, el total de ganancias de
los empleados (salario y comisin) para todos los departamentos. Tambin
calcular cuantos empleados tienen el salario mayor que 2000$ y tambin
cuantos empleados tienen su comisin mayor que su salario. Almacenar el
resultado en la tabla temp2 (compuesta de tres columnas, dos numricas y
otra de texto).

Excepciones
- Para un nmero de empleado dado incrementar su salario en un 10%.
Deberemos preguntar el nmero del empleado por medio de comandos

2
SQL*Plus. En este bloque tendremos que controlar dos excepciones
predefinidas de ORACLE, NO_DATA_FOUND y TOO_MANY_ROWS.
- Por medio de comandos SQL*Plus aceptaremos tres valores que
correspondan a un nmero de departamento, un nombre de un
departamento y una localidad. Realizamos un bloque PL/SQL en el cual
inserte en la tabla dept los valores que hemos introducido anteriormente.
Deberemos controlar los siguientes errores:
o Si ya existe, insertaremos en temp un error.
o Si ponemos un dato en una columna de menor longitud entonces
insertamos un error en temp.
o Si se producen otros errores entonces insertar en temp el nmero y
el mensaje del error.

NOTA: El error ORACLE de longitud del dato fuera del rango es el - 1438.
- Preguntaremos por el nmero de empleado con tcnicas de SQL*Plus. En un
bloque PL/SQL comprobaremos que si el empleado dado tiene un salario
mayor o igual de 1000$, entonces actualizaremos su salario quitndole
1000$ e informaremos de la operacin en la tabla temp. Si el salario que
tienen es inferior a 1000$ entonces provocaremos una excepcin, donde
insertaremos en temp el cdigo del empleado y el mensaje fondos
insuficientes. Tambin deberemos controlar que no exista el empleado o
que haya duplicados y otros errores que no hayamos manejado.
- Preguntar por el nombre del empleado con tcnicas de SQL*Plus. Por medio
de un bloque PL/SQL sacar el salario y el nombre del empleado que se ha
pedido e insertarlo en la tabla MAS_PAGADOS el nombre y el salario.
o Si no se encuentra el nombre insertar en temp un mensaje de error
0, No lo encuentro.
o Si hay ms de uno con el mismo nombre entonces en temp
insertaremos un error 1, Hay varios nombre);
o Si se producen varios errores entonces insertar en temp el cdigo de
error y el mensaje.

Procedimientos
- Crear el procedimiento quien_ejecuta, que inserte en la tabla tabla_long el
nombre del usuario y la fecha de cuando se ha conectado a ORACLE.
Primero deberemos crear tabla.
- Crear un procedimiento que actualice el salario de un empleado, pasado por
parmetro, aumentndolo un porcentaje el salario que tambin lo
introducimos como argumento. Tambin este procedimiento debe registrar
en tabla_log el usuario y la fecha que utiliza este procedimiento.
- Crear una funcin que muestre la suma de los salarios de un departamento
dado por un parmetro. Invocar la funcin desde SQL*Plus.
- Utilizar los procedimientos del paquete de ORACLE, DBMS_OUTPUT para
indicar en un procedimiento que calcule todos los salarios de los
departamentos y que lo indique en pantalla de la siguiente manera:
Depa rta men to : 10 S uma = . . .
Depa rta men to : 20 S uma = . . .
- Hacer un procedimiento que se llame alta_sal_dept en la que me va a pedir
un nmero de departamento como parmetro de entrada e insertar en la

3
tabla salario_dept (la cual se va a componer de dos campos) el nmero de
departamento y la suma de salarios de los empleados de ese departamento.

Funciones
- Hacer una funcin que devuelva el salario medio de un empleado en un
departamento determinado y con un trabajo determinado, estos valores se
pasarn como argumentos de entrada.

Paquetes
- Crear un paquete Gestin_de_depart, en el cual se van a declarar varios
procedimientos:
o Alta_dept con tres argumentos: nmero de departamento, nombre
del departamento y localidad del departamento. Este procedimiento
debe comprobar que los nmeros de departamento va de 10 en 10,
si no dara un error. Opcionalmente pondremos el parmetro de
nmero de departamento por defecto, en cuyo caso entonces el
nmero de departamento se obtendr por medio de un variable
privada el cual coja el prximo nmero de departamento posible,
siguiendo las reglas pertinentes.
o Baja_dept con un argumento. Dado un nmero de departamento lo
borramos.
o Mod_dept con dos argumentos. Dado un nmero de departamento
actualizamos la localidad al destino que le hemos indicado en el otro
parmetro.

NOTA: Habr que inicializar la variable privada, se pueden utilizar procedimientos


privados y tambin deberemos controlar en todos los procedimientos las
excepciones que puedan surgir.

4
- Crear un paquete Gestin_de_empresa, en el cual se van a declarar tres
procedimientos:
o Alta_emp con tres argumentos: nombre del empleado, trabajo que
de desempea y el nombre del jefe. Este procedimiento debe insertar
un empleado en la tabla emp, con todos los valores de las columnas;
por lo tanto, deberemos calcular el resto de los datos. El nmero del
empleado se obtendr por medio de una variable privada el cual coje
el prximo nmero de empleado posible, ser el valor mximo de
empleado +1. Para calcular el salario utilizaremos la funcin
sal_medio. La fecha de alta, ser la del sistema, y el departamento
ser el de su jefe. La comisin vendr dada si su trabajo es de
vendedor, si no es vendedor = NULL y si es vendedor = 0.
o Baja_emp con un argumento. Dado un nmero de empleado lo
borramos. Si esta empleado es jefe de un grupo de trabajadores
entonces deberemos de asignar como el jefe al del salario ms alto
del grupo de empleados que trabaja para el antiguo jefe.
o Mod_emp con dos argumentos. Dado un nmero de empleado
actualizamos su departamento que le hemos indicado en el otro
parmetro, si el departamento no existe lo crearemos utilizando
algn procedimiento ya creado.

NOTA: Habr que inicializar la variable privada, se pueden utilizar procedimientos


privados y tambin deberemos controlar en todos los procedimientos las
excepciones que puedan surgir.

Tr i g g e r s
- Crear un trigger que guarde los valores de la tabla dept en una tabla de
histricos.
- Hacer un disparador de base de datos sobre la tabla dept, en el cual cuando
se inserte o se actualice el nmero de departamento, compruebe que este
nmero sea mltiplo de diez.
- Crear un disparador de bases de datos en el cual cada vez que se hace una
operacin de modificado sobre la tabla emp, realice una actualizacin de la
columna salario total de la tabla salario_departamentos, es decir que cuando
se inserte una nueva fila, se borre o se actualice salario deberemos controlar
el salario total por departamentos.
- Realizar un disparador de fila sobre la tabla emp que se ejecute cuando se
actualiza o se inserte sobre la tabla emp, comprobar que el salario se
encuentre entre el mximo y el mnimo de ese trabajo para un
departamento. Tambin deberemos comprobar que existe el departamento,
si no existe habr que crearlo. Si se modifica el departamento de un director
deberemos cambiar el departamento a sus empleados.

5
6

También podría gustarte