PL sql

Páginas: 6 (1489 palabras) Publicado: 14 de mayo de 2013
PRACTICA 6


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...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Pl/Sql
  • Pl/Sql
  • pl/sql
  • Cursores en PL/SQL
  • Ejercicios Pl Sql
  • Oracle pl/sql
  • tutorilal pl/sql
  • Ejercicios Pl/Sql

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS