回 帖 发 新 帖 刷新版面

主题:请教大家一个oracle存储过程的问题,谢谢

创建一个过程(过程名MYPROC,以部门编号、工资浮动比率为参数)修改该部门中所有员工的工资。公式如下:
员工新工资=员工旧工资×工资浮动比率
业务描述:同时保证员工新工资不高于最高工资限额数5000元

我是这样写的:
create or replace procedure
MYPROC(deptid number,rate number)
as
 cursor Csalary is select salary from Employee where deptno=deptid;
 newsal Csalary%rowtype;
begin
  update Employee set salary=salary*rate where deptno=deptid;
  for newsal in Csalary loop
   if (newsal>=5000) then
     dbms.output.put_line('员工新工资不高于最高工资限额数5000元');
     rollback;
    end if;
  end loop;
end;
/
可是运行时,总是报编译错误,请大家帮我看下那里出错了 谢谢!

回复列表 (共2个回复)

沙发

修改如下:
create or replace procedure
MYPROC(deptid number,rate number)
as
 cursor Csalary is select salary from Employee where deptno=deptid;
begin
  update Employee set salary=salary*rate where deptno=deptid;
  for newsal in Csalary loop
   if (newsal.salary>=5000) then
     dbms.output.put_line('员工新工资不高于最高工资限额数5000元');
     rollback;
    end if;
  end loop;
end;
/

板凳

用for循环遍历游标时,不用定义行变量newsal。

我来回复

您尚未登录,请登录后再回复。点此登录或注册