orcale自定义函数返回值问题

函数:
create or replace function sal_fun
(no in number)
return number is
newSal number;
begin
select sal into newSal
from new_Sal where empno=no;
return(newSal);
end sal_fun;

调用:
update emp set sal = sal_fun(empno)【问题在这里】
where empno in(select empno from emp);

我以emp表为例,业务是把emp表所有员工的sal更新成newSal
请问我在调用那一块要如何写?
如何在update中调用自定义函数,并把where 字句的参数传进去?

1个回答

1.如果你是说把emp表所有都更新的话,就不用你那个where了吧,你的update emp针对 where empno in(select empno from emp),这跟不加where没区别
[code="sql"]
update emp set sal = sal_fun(empno);
[/code]

2.其实看你的意思,是想把emp表所有员工的sal更新成newSal表中的sal,这用不着写个function了吧:
[code="sql"]
update emp t
set t.sal =
(select e.sal from new_Sal e where e.empno = t.empno);
[/code]

liuyinhuan0409
liuyinhuan0409 当然是可以的,后面要加where条件也可以的
大约 8 年之前 回复
wing3501
wing3501 刚才试了下,确实好了,非常感谢
大约 8 年之前 回复
wing3501
wing3501 是的,其实这里可以不用自定义函数实现,但具体业务很复杂,我只是拿这个作为例子的。 请问update emp set sal = sal_fun(empno); 这样直接调函数就可以了吗?
大约 8 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐