Professional Documents
Culture Documents
05,
department number 20 by 0.08, department number 30 by 0.1 and other department by 03. Whenever any
such raise is given to employees an audit trail of the same is maintained in the EMP RAISE table. The EMP
RAISE table holds the employee number, the date when the raise was given and the raise amount.
Write a PL/SQL block to update the salary of each employee appropriately and insert a record in the EMP RAISE table
as well
SQL> CREATE TABLE EMP_RAISE (EMP_CODE NUMBER(2), RAISE_AMOUNT NUMBER(5), RAISE_DATE DATE);
Table created.
0.19 seconds
DECLARE
CURSOR CUR IS
SELECT ENO,SALARY,DNO FROM Employee;
C CUR%ROWTYPE;
INC Employee.SALARY%TYPE;
BEGIN
OPEN CUR;
LOOP
FETCH CUR INTO C;
EXIT WHEN CUR%NOTFOUND;
IF C.DNO=10 THEN
INC := C.SALARY*0.05;
INSERT INTO EMP_RAISE VALUES (C.ENO, INC, SYSDATE);
UPDATE Employee SET SALARY=C.SALARY+INC WHERE ENO=C.ENO;
ELSIF C.DNO=20 THEN
INC:=C.SALARY*0.08;
INSERT INTO EMP_RAISE VALUES (C.ENO, INC, SYSDATE);
UPDATE Employee SET SALARY=C.SALARY+INC WHERE ENO=C.ENO;
ELSIF C.DNO=30 THEN
INC:= C.SALARY*0.1;
INSERT INTO EMP_RAISE VALUES (C.ENO, INC, SYSDATE);
UPDATE Employee SET SALARY=C.SALARY+INC WHERE ENO=C.ENO;
END IF;
END LOOP;
CLOSE CUR;
END;
/
6 rows selected.