【问题标题】:PL/SQl -To find the total increase in annual salaryPL/SQl - 求年薪的总增幅
【发布时间】:2014-03-05 04:01:57
【问题描述】:

有一个表employee emp no 和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;

现在我需要年薪增加总额

我尝试使用 sum(lv_newsal_num - lv_cursal_num)

请帮忙

【问题讨论】:

  • 我应该补充一点,我不断收到未知的命令错误

标签: mysql sql plsql


【解决方案1】:

您所要做的就是对 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 每年的总增长量

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2019-05-30
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    • 2015-12-12
    相关资源
    最近更新 更多