PL sql
EJERCICIO 1
Cree una vista llamada INF_GENERAL que contiene el número total de empleados, el de departamentos, el de centros, el número de jefes, la fecha en que se incorporó el primer empleado a la empresa y la fecha del último que lo a hecho y el total de lo gastado por la empresa en el pago de comisiones. Ahora cree una tabla INF_GRAL_FISICA que sirva para almacenar estosdatos. Cree un bloque PL/SQL que realice una consulta a la base de datos para cada uno de estos atributos y vaya almacenando los valores en variables para, finalmente hacer una inserción de todos los datos en la tabla.
create view INF_GENERAL (TOTAL_EMP, TOTAL_DEP,TOTAL_CENT, NUM_JEFES,FECHA_PRI,FECHA_ULT,TOTAL_COM)
as SELECT COUNT(DISTINCT COD_E), COUNT(DISTINCT NUMERO_D),
COUNT(DISTINCTCENTRO_D),
COUNT(DISTINCT DIRECTOR_D),
MIN(FECHA_INGRESO),MAX(FECHA_INGRESO),SUM(COMISION_E)
FROM EMPLEADOS
NATURAL JOIN DEPARTAMENTOS;
create table INF_GRAL_FISICA
(TOTAL_EMP NUMBER,TOTAL_DEP NUMBER,TOTAL_CENT NUMBER, NUM_JEFES NUMBER,FECHA_PRI DATE,FECHA_ULT DATE,TOTAL_COM NUMBER);
DECLARE
V_TOTAL_EMP INF_GRAL_FISICA.TOTAL_EMP%TYPE;
V_TOTAL_DEP INF_GRAL_FISICA.TOTAL_DEP%TYPE;V_TOTAL_CENT INF_GRAL_FISICA.TOTAL_CENT%TYPE;
V_NUM_JEFES INF_GRAL_FISICA.NUM_JEFES%TYPE;
V_FECHA_PRI INF_GRAL_FISICA.FECHA_PRI%TYPE;
V_FECHA_ULT INF_GRAL_FISICA.FECHA_ULT%TYPE;
V_TOTAL_COM INF_GRAL_FISICA.TOTAL_COM%TYPE;
BEGIN
SELECT TOTAL_EMP,TOTAL_DEP,TOTAL_CENT,NUM_JEFES,FECHA_PRI, FECHA_ULT,TOTAL_COM INTO V_TOTAL_EMP, V_TOTAL_DEP,V_TOTAL_CENT,V_NUM_JEFES,V_FECHA_PRI,V_FECHA_ULT,V_TOTAL_COM
FROM INF_GENERAL;
INSERT INTO INF_GRAL_FISICA(TOTAL_EMP,TOTAL_DEP,TOTAL_CENT,NUM_JEFES,FECHA_PRI, FECHA_ULT,TOTAL_COM)
VALUES(V_TOTAL_EMP, V_TOTAL_DEP,V_TOTAL_CENT,V_NUM_JEFES,V_FECHA_PRI, V_FECHA_ULT,V_TOTAL_COM);
END;
/
EJERCICIO 2
Cree una vista llamada INF_EMPLEADOS que contiene la información del nombre de cada empleado, su fecha de nacimiento y el código de su departamento.Haga lo mismo creando físicamente una tabla, llamada INF_EMP_FISICA yvolcando la información mediante la sentencia INSERT INTO … SELECT …; Compruebe que la información de la tabla y la vista es la misma usando el operador MINUS.
Por último, borre todas las tuplas que hay en INF_EMP_FISICA y diseñe un bloque PL/SQL que realice la misma función que el INSERT anterior pero usando un cursor delectura que lee sobre la tabla empleados. Vuelva a comprobar que existe la misma información en la tabla y en la vista
CREATE VIEW INF_EMPLEADOS(NOMBRE,FECHA,DEPARTAMENTO)
AS SELECT NOMBRE_E,FECHA_NAC,DEPARTAMENTO_E
FROM EMPLEADOS;
CREATE TABLE INF_EMP_FISICA
(NOMBRE1 VARCHAR2(30),
FECHA1 DATE,
DEPARTAMENTO1 NUMBER(3));
INSERT INTO INF_EMP_FISICA(NOMBRE1,FECHA1,DEPARTAMENTO1)SELECT NOMBRE,FECHA,DEPARTAMENTO
FROM INF_EMPLEADOS;
select * from INF_EMPLEADOS
MINUS
select * from INF_EMP_FISICA;
DELETE FROM INF_EMP_FISICA;
DECLARE
CURSOR LECTURA IS
SELECT NOMBRE_E,FECHA_NAC,DEPARTAMENTO_E
FROM EMPLEADOS;
vnombre empleados.NOMBRE_E%TYPE;
vfecha_nacimiento empleados.fecha_nac%TYPE;
vdepartamento empleados.departamento_e%TYPE;
BEGIN
OPEN LECTURA;
LOOPFETCH LECTURA INTO vnombre,vfecha_nacimiento,vdepartamento;
EXIT WHEN LECTURA %NOTFOUND;
INSERT INTO INF_EMP_FISICA(NOMBRE1,FECHA1,DEPARTAMENTO1)
VALUES(vnombre,Vfecha_nacimiento,vdepartamento);
END LOOP;
close lectura;
END;
/
EJERCICIO 3
Cree una tablaHISTORIAL con el siguiente esquema:
EMPLEADO NUMBER(38) Código del empleado
FECHA_INICIO DATE Fecha en que comienza adesarrollar un trabajo
FECHA_FIN DATE Fecha en que termina de desarrollar un trabajo
TRABAJO VARCHAR2(20) Descripción del trabajo.
Inserte las siguientes tuplas:
HISTORIAL
EMPLEADO FECHA_INICIO FECHA_FIN TRABAJO
110 24/07/2000 24/08/2000 Informe de análisis de riesgos
110 01/08/2000 10/08/2000 Suplencia empleado 120
110 25/08/2000 Desarrollo del programa emergencias
120 24/07/1999...
Regístrate para leer el documento completo.