编写存储过程和触发器,实现对scott公司员工增加奖金

2020/11/10 12:18
阅读数 44

编写存储过程触发器,实现对scott公司员工增加奖金,
10部门增加额为工资的20%,
20部门增加额为工资的15%,
30部门增加额为工资的10%,
对于职位为MANAGER且工资高于2500的员工不增加奖金。



select * from emp;
-- 1.触发器
create or replace trigger t_up_emp
before update on emp
for each row
begin
  if :old.job='MANAGER' and :old.sal > 2500 then
    select :old.sal into :new.sal from dual;
  end if;
end;
-- 1.1验证触发器
update emp set sal=sal+150 where empno='7698';


-- 2.存储过程
create or replace procedure p_up_sal
is
  emp_ emp%rowtype;
  cursor c1(deptno_ emp.deptno%type) is select * from emp where deptno=deptno_;
begin
  open c1(10);-------------10部门
    loop
      fetch c1 into emp_;
      exit when c1%notfound;
      update emp set comm = nvl(comm,0) + 0.2*emp_.sal where empno=emp_.empno;
      commit;
    end loop;
  close c1;
  open c1(20);-------------20部门
    loop
      fetch c1 into emp_;
      exit when c1%notfound;
      update emp set comm = nvl(comm,0) + 0.15*emp_.sal where empno=emp_.empno;
      commit;
    end loop;
  close c1;
  open c1(30);-------------30部门
    loop
      fetch c1 into emp_;
      exit when c1%notfound;
      update emp set comm = nvl(comm,0) + 0.1*emp_.sal where empno=emp_.empno;
      commit;
    end loop;
  close c1;
end;
-- 2.1执行存储过程
begin
   p_up_sal;
end;
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部