简体   繁体   中英

PL/SQl -To find the total increase in annual salary

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM