我需要创建一个函数(或者如果有更有效的方法),它将使用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;
请问有什么消息吗?
答案 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子句,那就错了。