PRÁCTICA DE VISTAS, SECUENCIAS, CURSORES Y CATÁLOGO
Considere las siguientes relaciones de un esquema que contiene información acerca de una
aplicación de procesamiento de pedidos para una empresa de distribución:
Clientes(num_clie, nombre_clie, num_vendedor, limite_credito)
Vendedores(num_vendedor, nombre, edad, oficina, titulo, contrato, director, cuota, ventas)
Productos(id_fab, id_producto, descripcion, precio, existencias)
Pedidos(num_pedido, fecha_pedido, num_clie, num_vendedor, id_fab, id_producto, cantidad,
importe)
Escriba las siguientes sentencias en SQL:
1. Crear una vista que contenga el num_vendedor y los datos resumidos de pedidos (cuenta,
minimo importe, máximo importe, suma de importes y promedio de importes) por cada
vendedor.
2. Crear una vista que muestre la información de los vendedores de las oficinas 21 y 22.
3. Crear una vista para el vendedor número 102 que contenga solamente la información de
los pedidos remitidos por clientes asignados a él.
4. Crear una vista sobre la relación Clientes que incluya únicamente los nombres de los clientes
y los nombres de los vendedores a los que están asignados.
5. Crear una vista que contenga el número de pedido, el nombre del cliente y el nombre del
vendedor para cada número de pedido de la relación Pedidos.
6. Realizar una consulta sobre la vista del ejercicio 5 que agrupe por vendedor y cliente los
pedidos y muestre el nombre del vendedor, nombre del cliente y la suma de importes.
Considere las siguientes relaciones del esquema Compañía:
Empleado(empId, apellido, nombreP, nombreDepartamento, fechaNacim, fechaIngreso, salario)
Departamento(nombreDepartamento, gerenteId)
Proyecto(proyNum, nombreProyecto, gerenteIdProyecto, presupuesto, fechaInicio, duracion)
Asignación(proyNum, empId, horasAsignadas, clasificacion)
Escriba las siguientes sentencias en SQL:
7. Crear una vista que contenga una lista alfabética (en orden ascendente de apellido) de los
nombres de los empleados asignados al proyecto 1001.
8. Crear una vista sobre la tabla Empleado que tenga el nombre del empleado y el nombre del
departamento para el que trabaja.
9. Realizar una consulta sobre la vista del ejercicio 8 que contenga los nombres de todos los
empleados del departamento de Contabilidad.
10. Crear una vista que tenga número de proyecto y nombre de cada proyecto junto con las ID
y nombres de los empleados asignados a él.
11. Con la vista del ejercicio 10, obtenga el número de proyecto y nombre de proyecto de todos
los proyectos a los que está asignado el empleado 110.
Escriba las sentencias de secuencia siguientes:
12. Crear una secuencia de nombre secuencia1 que comience en 1000 y se incremente en 1,
no guarde en memoria un conjunto preasignado de números de secuencia y no sea circular.
13. Alterar la secuencia del ejercicio 12 para que guarde en memoria 50 números de secuencia.
14. Crear una secuencia cíclica de nombre incremento_ciclico que comience en 10, se
incremente en 1 y su valor máximo sea 30.
15. Crear una secuencia decremental de nomhre secuencia_decremental que comience en
100, se incremente en -1 y su valor máximo sea igual al del comienzo.
16. Crear la secuencia de nombre sec_codigolibros, estableciendo que comience en 1, sus
valores estén entre 1 y 9999 y se incremente en 1, por defecto, será nocircular.
17. Alterar la secuencia del ejercicio 16 para que el máximo valor sea 99999 y se incremente en
2.
Desarrolle los procedimientos siguientes usando cursores;
18. Usando el esquema Compañía, desarrolle usando un cursor un procedimiento almacenado
que reciba como parámetros un nombre de departamento, un importe y un porcentaje;
y suba el salario de todos los empleados del departamento indicado como argumento.
La subida será el porcentaje o el importe indicado como argumentos (el que sea más
beneficioso para el empleado entre los dos). Controle con una excepción que el nombre
del departamento exista.
19. Usando el esquema Compañía, desarrolle un procedimiento almacenado sin parámetros
que use un cursor, el procedimiento en lugar de mostrar el nombre de cada departamento
y el número de empleados que tiene, dicha información la inserte en un tabla TDept ya
creada que tiene dos columnas: nombreDepartamento y numeroEmpleados.
20. Usando el esquema Compañía, desarrolle un procedimiento anónimo que muestre
usando un cursor el apellido, el nombre de pila y la fecha de ingreso de todos los
empleados ordenados por apellido.
21. Usando el esquema hr, desarrolle un procedimiento anónimo que use un cursor para
mostrar la información de los dos empleados con los mayores salarios por cada cargo
(job_id).
22. Usando el esquema hr, desarrolle un procedimiento almacenado sin parámetros que use
un cursor para incrementar la comisión (commission_pct) en función del salario, de los
empleados de departamentos localizados en las ciudades de Boston y Nueva York según su
antigüedad (calculada con la fecha de ingreso: hire_date) y cargo (job_id) según la siguiente
tabla:
Boston
Antigüedad Incremento
< 10 años 10%
>= 10 y <= 20 15%
> 20 20%
Nueva York
Cargo Incremento
Manager 0%
Analyst 12%
Otros 17%
Escriba las consultas de catálogo siguientes:
23. Escriba una consulta de diccionario de datos Oracle a fin de mostrar los nombres de todas
las columnas en una tabla llamada employees.
24. Escriba una consulta correspondiente para las tablas DB2 UDB SYSCAT para el ejercicio 23.
25. Escriba una consulta de diccionario de datos Oracle para encontrar toda la información
acerca de las columnas department_id.
26. Escriba una consulta correspondiente para las tablas DB2 UDB SYSCAT para el ejercicio 25
27. Escriba una consulta de diccionario de datos Oracle para encontrar los nombres de las tablas
que tengan más de dos índices.
28. Escriba una consulta correspondiente para las tablas DB2 UDB SYSCAT para el ejercicio 27.