valeria03 / BaseDD2_ValeriaRodriguezM

tareas del curso
0 stars 0 forks source link

reto3 #1

Open valeria03 opened 9 years ago

valeria03 commented 9 years ago

@daton

CREATE TABLE EMPLEADO(ID_EMPLEADO INTEGER,NOMBRE VARCHAR2(50),SUELDO FLOAT,FECHA DATE,CONSTRAINT PK_ID_EMPLEADO PRIMARY KEY (ID_EMPLEADO));

2 SELECT * FROM EMPLEADO;

3 CREATE SEQUENCE SEC_EMPLEADO START WITH 1 INCREMENT BY 1 NOMAXVALUE;

4 SET SERVEROUTPUT ON; 5 CREATE OR REPLACE PROCEDURE GUARDAR_EMPLEADO(NOMBRE_IN IN VARCHAR2,SUELDO_IN IN FLOAT)AS 6 MY_ID_EMPLEADO INTEGER; 7 FECHA_AC DATE := SYSDATE;

8 BEGIN 9 SELECT SEC_EMPLEADO.NEXTVAL INTO MY_ID_EMPLEADO FROM DUAL; 10 INSERT INTO EMPLEADO(ID_EMPLEADO,NOMBRE,SUELDO,FECHA) VALUES (MY_ID_EMPLEADO,NOMBRE_IN,SUELDO_IN,FECHA_AC); 11 DBMS_OUTPUT.PUT_LINE('EMPLEADO GUARDADO CON EXITO!!!!'); 12 END; 13 /

14 BEGIN 15 GUARDAR_EMPLEADO('Valeria',5500.20); 16 END; 17 /

18 CREATE OR REPLACE PROCEDURE ACTUALIZAR_EM(ID_EMPLEADO_IN IN INTEGER,NOMBRE_IN IN VARCHAR2,PORCENTAJE_IN IN FLOAT)AS 19 CURSOR CURSOR_ACTUALIZAR_EMP IS SELECT * FROM EMPLEADO WHERE ID_EMPLEADO = ID_EMPLEADO_IN AND NOMBRE LIKE NOMBRE_IN FOR UPDATE; 20 HOY INTEGER := EXTRACT (DAY FROM SYSDATE);

21 BEGIN 22 IF HOY != 15 AND HOY != 1 THEN 23 RAISE_APPLICATION_ERROR(-20001,'ERROR, SOLO LOS DIAS 1 Y 15 DE CADA MES'); 24 ELSE 25 IF PORCENTAJE_IN < 0 OR PORCENTAJE_IN > 100 THEN 26 RAISE_APPLICATION_ERROR(-20002,'ERROR!!!, EL PORCENTAJE DEBE SER UN NUMERO ENTRE 0 Y 100'); 27 ELSE 28 FOR REC IN CURSOR_ACTUALIZAR_EMPLEADO 29 LOOP 30 UPDATE EMPLEADO SET SUELDO = REC.SUELDO * (1+(PORCENTAJE_IN/100)) WHERE CURRENT OF CURSOR_ACTUALIZAR_EMPLEADO; 31 END LOOP; 32 END IF; 33 END IF; 34 END; 35 /