2014-03-05 18 views
0

有一個僱員與工資和工資。我需要找到加薪,新薪水和薪水總額的增加。PL/SQl - 要找到年薪總增長

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; 

現在我需要的年薪增加總量

我試圖用總和(lv_newsal_num - lv_cursal_num)

請幫助

+0

我要補充一點,我不斷收到未知命令錯誤 – londonbridge

回答

0

所有你需要做的就是總結lv_raise_num值。

之前循環開始設置v_salinc_num爲0

v_salinc_num := 0; 

後接着IF條件添加lv_raise_num值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); 

一旦循環結束v_salinc_num具有年度總增長