TEST1:请使用函数+plsql完成给员工加薪的功能。
CLERK 加薪 20%; SALESMAN 加薪30%; MANAGER 加薪35%
SQL> select * from t;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- ---------- ---------- ----------- ---------- ---------- ----------
7369 SMITH CLERK 7902 1980/12/17 800 20
7499 ALLEN SALESMAN 7698 1981/2/20 1600 300 30
7521 WARD SALESMAN 7698 1981/2/22 1250 500 30
7566 JONES MANAGER 7839 1981/4/2 2975 20
7654 MARTIN SALESMAN 7698 1981/9/28 1250 1400 30
7698 BLAKE MANAGER 7839 1981/5/1 2850 30
7782 CLARK MANAGER 7839 1981/6/9 2450 10
7788 SCOTT ANALYST 7566 1982/12/9 3000 20
7839 KING PRESIDENT 1981/11/17 5000 10
7844 TURNER SALESMAN 7698 1981/9/8 1500 0 30
7876 ADAMS CLERK 7788 1983/1/12 1100 20
7900 JAMES CLERK 7698 1981/12/3 950 30
7902 FORD ANALYST 7566 1981/12/3 3000 20
7934 MILLER CLERK 7782 1982/1/23 1300 10
14 rows selected
总结:
①如果使用case when如果 case 发现when不存在判断条件时会触发异常。 if判断时不会出现这样的情况。以下进行了测试,
在进行if测试时,将不是条件中三种职业的sal值为空,原因是在调用函数时,l_result返回为空,1+null还是null,则sal就为空。所以最后调整程序
nvl处理了一下空值,经过测试,数据没有问题。
② where current of cur_t,定义游标时使用for update.
测试:
创建函数:
create or replace function call_func(l_job varchar2)
return number as
l_result number;
begin
case
when l_job = 'CLERK' then
l_result := 0.2;
when l_job = 'SALESMAN' then
l_result := 0.3;
when l_job = 'MANAGER' then
PLSQL条件语句完成员工加薪功能(记录类型+游标case when+if+for update+where current of)
最新推荐文章于 2024-06-29 14:00:00 发布
本文通过PLSQL实现了一个根据员工职位自动加薪的程序,使用了CASE WHEN、IF、FOR UPDATE和WHERE CURRENT OF等语句。分别展示了如何处理不同职位的加薪比例,并通过函数和游标进行数据更新。程序测试结果显示加薪操作成功,并讨论了在处理数据时遇到的空值问题及其解决方案。
摘要由CSDN通过智能技术生成