PLSQL条件语句完成员工加薪功能(记录类型+游标case when+if+for update+where current of)

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
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值