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 /
@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 /