PL / SQL帮我制作这段代码

时间:2018-03-13 10:04:59

标签: oracle plsql

使用游标创建PL / SQL块,以更新员工表上的工资列,以及通过键盘输入的特定部门中的员工。 规则提高了工资:

  • 如果员工年龄不足16岁,则提高工资15%
  • 如果员工的工作年限在16-20岁之间,则工资增加20%
  • 如果员工年满20岁,加薪25%

在更新的员工表上显示employee_id,last_name,旧职位,新薪水。

输入d_id的值:30

EMPLOYEE_ID LAST_NAME                  LAMAKERJA     SALARY
----------- ------------------------- ---------- ----------
        119 Colmenares                16.1452239       3000
        118 Himuro                    16.8794705       3120
        116 Baida                     17.7726212       3480
        117 Tobias                    18.1917992       3360
        115 Khoo                      20.3781006       3720
        114 Raphaely                  20.8219362      13200

6 rows selected.

1 个答案:

答案 0 :(得分:0)

为了让你开始:年龄是一个常见的问题,所以让我们假设我的琐碎计算完成了这项工作。遍历所有员工,检查您被告知的条件并更新员工的工资。最后的SELECT完全取决于你。

   FOR cur_r
      IN (SELECT employee_id, TRUNC ( (SYSDATE - date_of_birth) / 365.25) age
            FROM employees)
   LOOP
      UPDATE employees e
         SET e.salary =
                  e.salary * CASE
                               WHEN age ... THEN ...
                               WHEN age ... THEN ...
                             END
       WHERE e.employee_id = ...
   END LOOP;