there's a table employee with emp no and salary. I need to find salary raise , new salary and total increase in salary.
DECLARE
CURSOR cur_emp IS
SELECT empno, sal
FROM employee
WHERE job <> 'PRESIDENT'//
FOR UPDATE NOWAIT;
lv_cursal_num NUMBER(6);
lv_raise_num NUMBER(6);
lv_newsal_num NUMBER(6);
v_salinc_num NUMBER(6);
BEGIN
FOR rec_emp IN cur_emp LOOP
lv_cursal_num := rec_emp.sal * 12;
lv_raise_num := rec_emp.sal * 12 * .06;
lv_newsal_num := lv_cursal_num + lv_raise_num;
IF lv_raise_num > 2000 THEN
lv_raise_num := 2000;
lv_newsal_num := lv_cursal_num + lv_raise_num;
END IF;
--UPDATE employee SET sal = lv_newsal_num/12 WHERE CURRENT OF cur_emp;
Dbms_Output.put_line('Emp no: ' || rec_emp.empno ||' Current Annual Salary: ' || lv_cursal_num ||
' Salary Raise: ' ||lv_raise_num||' Proposed New Annual Salary: '||lv_newsal_num);
END LOOP;
END;
Now I need total amount of annual salary increase
I tried to use sum(lv_newsal_num - lv_cursal_num)
please help
All you have to do is summing lv_raise_num values.
BEfore the loop begin set v_salinc_num to 0.
v_salinc_num := 0;
Then after IF condition add lv_raise_num value to v_salinc_num.
BEGIN
FOR rec_emp IN cur_emp LOOP
lv_cursal_num := rec_emp.sal * 12;
lv_raise_num := rec_emp.sal * 12 * .06;
lv_newsal_num := lv_cursal_num + lv_raise_num;
IF lv_raise_num > 2000 THEN
lv_raise_num := 2000;
lv_newsal_num := lv_cursal_num + lv_raise_num;
END IF;
v_salinc_num := v_salinc_num + lv_raise_num;
Dbms_Output.put_line('Emp no: ' || rec_emp.empno ||' Current Annual Salary: ' || lv_cursal_num ||
' Salary Raise: ' ||lv_raise_num||' Proposed New Annual Salary: '||lv_newsal_num);
END LOOP;
Dbms_Output.put_line('Total annual increment: ' || v_salinc_num);
Once the loop ended v_salinc_num has the total annual increase
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.