更新薪水的功能

时间:2014-03-06 14:38:58

标签: sql plsql

我需要创建一个函数(或者如果有更有效的方法),它将使用0.01更新SMALLEST sal FROM emp。

我尝试了几种方法,但无法弄明白。

CREATE OR REPLACE FUNCTION update_sal RETURN NUMBER; 
    IS  emp.sal NUMBER; 
BEGIN   
    UPDATE emp 
       SET emp.sal = (SELECT MIN(emp.sal) FROM emp) * 0,1); 
END update_sal;

请问有什么消息吗?

2 个答案:

答案 0 :(得分:1)

你的函数有很多语法错误,因为你实际上没有返回任何东西,你需要使用一个过程。

create or replace procedure update_sal
is
  begin
    update emp
    set sal = sal * .01
    where sal = (select min(sal) from emp);

end;

答案 1 :(得分:1)

我相信这更符合您的要求:

CREATE OR REPLACE FUNCTION update_sal RETURN NUMBER
IS  emp.sal NUMBER; 
BEGIN     
  UPDATE emp 
  SET emp.sal = emp.sal * 0,1
  WHERE emp.sal = (SELECT MIN(e.sal) FROM emp e)
END update_sal;

你试图在SET中同时限制和更新。使用WHERE限制,使用SET更改值。

根据经验,如果你的UPDATE最终没有WHERE子句,那就错了。