Sql 更新薪资的函数

Sql 更新薪资的函数,sql,plsql,Sql,Plsql,我需要创建一个函数(或者如果有更有效的方法),将emp中的最小sal更新为0.01 我试过几种方法,但都想不出来 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; 有什么建议吗?您的函数

我需要创建一个函数(或者如果有更有效的方法),将emp中的最小sal更新为0.01

我试过几种方法,但都想不出来

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;

有什么建议吗?

您的函数有很多语法错误,而且由于您实际上没有返回任何内容,因此需要使用一个过程

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

end;

我相信这正是你想要的:

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;
您试图在集合中同时限制和更新。限制在何处,使用集合更改值


根据经验,如果您的更新最终没有WHERE子句,则说明有问题。

根据@oldProgrammersSpot,您应该将其声明为一个过程,而不是一个函数。