Vous êtes sur la page 1sur 8

EXAMEN: BRUNO RAL GMEZ GUZMN SECCIN 1:

1
Cdigo:
DECLARE V_Employee_Id Employees.Employee_Id%Type:=('&NUMERO_EMPLEADO'); v_first_name Employees.first_name%TYPE; v_hire_date employees.hire_date%TYPE; diezAnios INTEGER; BEGIN SELECT hire_date INTO v_hire_date From Employees WHERE employee_id = V_Employee_Id; diezAnios:=(SYSDATE-v_hire_date)/365; Select Employee_Id, First_Name, Hire_Date INTO v_employee_id, v_first_name, v_hire_date From Employees Where Employee_Id = V_Employee_Id; dbms_output.put_line('Nombre: '|| v_first_name||' Antigedad: '||diezAnios||' Aos'); END;

Ejecucin:

2
Cdigo:
Select E.Emp_Name, Pu.Pst_Name, Pro.Proy_Name, To_Char(An.Tr_Hrs_Cobradas*Pu.Pst_Pagoxhora, '$99,999.99')Salario From Empleado E,Puesto Pu,Trabaja An,Proyecto Pro Where E.Emp_Puesto = Pu.pst_num And E.Emp_Num = An.Tr_Emp And Pro.Proy_Num = An.Tr_Proy And Pro.Proy_Name='Amber Wave';

Ejecucin:

SECCIN 2
Cdigo: Creacin de tabla CREATE TABLE SECCION_2 (PROY_NUM NUMBER(2), PROY_NAME VARCHAR2(30), EMP_NUM NUMBER(3), EMP_NAME VARCHAR2(35), PST_NAME VARCHAR2(30), PST_PAGOXHORA NUMBER(7,2), TR_HRS_COBRADAS NUMBER(7,2), salario NUMBER(7,2)); BLOQUE ANONIMO
DECLARE V_PROY_NUM PROYECTO.PROY_NUM%TYPE; V_PROY_NAME PROYECTO.PROY_NAME%TYPE; V_EMP_NUM EMPLEADO.EMP_NUM%TYPE; V_EMP_NAME EMPLEADO.EMP_NAME%TYPE; V_PST_NAME PUESTO.PST_NAME%TYPE; V_PST_PAGOXHORA PUESTO.PST_PAGOXHORA%TYPE; V_TR_HRS_COBRADAS TRABAJA.TR_HRS_COBRADAS%TYPE; minEmp INTEGER; MAXEMP INTEGER; salario NUMBER(7,2); BEGIN SELECT MIN(EMP_NUM) INTO MINEMP FROM EMPLEADO,TRABAJA WHERE EMP_NUM = TR_EMP; SELECT MAX(EMP_NUM) INTO maxEmp FROM EMPLEADO,TRABAJA WHERE Emp_Num = Tr_Emp; FOR I IN 101..103 LOOP SELECT PRO.PROY_NUM, PRO.PROY_NAME, E.EMP_NUM, E.EMP_NAME, PU.PST_NAME,PU.PST_PAGOXHORA,AN.TR_HRS_COBRADAS, AN.TR_HRS_COBRADAS*PU.PST_PAGOXHORA AS SALARIO INTO V_PROY_NUM,V_PROY_NAME,V_EMP_NUM,V_EMP_NAME,V_PST_NAME,V_PST_PAGOXHORA,V_TR_HRS_COBRADAS,SALARIO From Empleado E,Puesto Pu,Trabaja An,Proyecto Pro WHERE E.EMP_PUESTO = PU.PST_NUM And E.Emp_Num = An.Tr_Emp AND PRO.PROY_NUM = AN.TR_PROY AND AN.TR_PROY=15 AND E.Emp_Num=I;

DBMS_OUTPUT.PUT_LINE(V_EMP_NUM); INSERT INTO SECCION_2(PROY_NUM, PROY_NAME, EMP_NUM, EMP_NAME, PST_NAME,PST_PAGOXHORA,TR_HRS_COBRADAS,SALARIO) VALUES(V_PROY_NUM,V_PROY_NAME,V_EMP_NUM,V_EMP_NAME,V_PST_NAME,V_PST_PAGOXHORA,V_TR_HRS_COBRADAS,SALARIO);

END LOOP; END;

Ejecucin:

SECCIN 3
Cdigo: CREATE OR REPLACE PROCEDURE PROY_DURA (P_ID_PROY IN TRABAJA.TR_PROY%TYPE, YEARS OUT INTEGER, MESES OUT INTEGER) IS P_FECHA_INI TRABAJA.TR_FECHAINICIO%TYPE; P_FECHA_TER TRABAJA.TR_FECHATERMINO%TYPE; BEGIN SELECT DISTINCT TR_FECHAINICIO,TR_FECHATERMINO INTO P_FECHA_INI,P_FECHA_TER FROM TRABAJA WHERE TR_PROY = P_ID_PROY; YEARS:=(P_FECHA_TER - P_FECHA_INI)/365; MESES:=MONTHS_BETWEEN (P_FECHA_TER, P_FECHA_INI); DBMS_OUTPUT.PUT_LINE(YEARS||' AOS. '||MESES||'MESES.'); END PROY_DURA; Declarando Variables: VARIABLE MESES VARIABLE YEARS NUMBER; NUMBER;

Executando Procedimiento:

EXECUTE PROY_DURA(15,:MESES,:YEARS);

SECCIN 3.1
Cdigo: Creacin de tabla

CREATE TABLE SECCION_3 (PROY_NUM NUMBER(2), PROY_NAME VARCHAR2(30), EMP_NUM NUMBER(3), EMP_NAME VARCHAR2(35), PST_NAME VARCHAR2(30), PST_PAGOXHORA NUMBER(7,2), TR_HRS_COBRADAS NUMBER(7,2), SALARIO NUMBER(7,2));

PROCEDIMIETNO ALMACENADO
CREATE OR REPLACE PROCEDURE INCRE_SAL (V_PROY_NUM IN PROYECTO.PROY_NUM%TYPE) IS V_PROY_NAME PROYECTO.PROY_NAME%TYPE; V_EMP_NUM EMPLEADO.EMP_NUM%TYPE; V_EMP_NAME EMPLEADO.EMP_NAME%TYPE; V_PST_NAME PUESTO.PST_NAME%TYPE; V_PST_PAGOXHORA PUESTO.PST_PAGOXHORA%TYPE; V_TR_HRS_COBRADAS TRABAJA.TR_HRS_COBRADAS%TYPE; minEmp INTEGER; MAXEMP INTEGER; salario NUMBER(7,2); BEGIN SELECT MIN(EMP_NUM) INTO MINEMP FROM EMPLEADO,TRABAJA WHERE EMP_NUM = TR_EMP; SELECT MAX(EMP_NUM) INTO maxEmp FROM EMPLEADO,TRABAJA WHERE Emp_Num = Tr_Emp; FOR I IN 101..103 LOOP SELECT PRO.PROY_NAME, E.EMP_NUM, E.EMP_NAME, PU.PST_NAME,PU.PST_PAGOXHORA,AN.TR_HRS_COBRADAS, AN.TR_HRS_COBRADAS*PU.PST_PAGOXHORA AS SALARIO INTO V_PROY_NAME,V_EMP_NUM,V_EMP_NAME,V_PST_NAME,V_PST_PAGOXHORA,V_TR_HRS_COBRADAS,SALARIO From Empleado E,Puesto Pu,Trabaja An,Proyecto Pro

WHERE E.EMP_PUESTO = PU.PST_NUM And E.Emp_Num = An.Tr_Emp AND PRO.PROY_NUM = AN.TR_PROY AND AN.TR_PROY = V_PROY_NUM AND E.Emp_Num = I; SALARIO:=SALARIO+(SALARIO*0.10);

DBMS_OUTPUT.PUT_LINE('NUM_EMP'||V_EMP_NUM||' SALARIO:'||SALARIO); INSERT INTO SECCION_3(PROY_NUM, PROY_NAME, EMP_NUM, EMP_NAME, PST_NAME,PST_PAGOXHORA,TR_HRS_COBRADAS,SALARIO) VALUES(V_PROY_NUM,V_PROY_NAME,V_EMP_NUM,V_EMP_NAME,V_PST_NAME,V_PST_PAGOXHORA,V_TR_HRS_COBRADAS,SALARIO); END LOOP; END INCRE_SAL;

EJECUCIN

Vous aimerez peut-être aussi