【发布时间】:2016-08-16 18:15:43
【问题描述】:
当我这样做时:
select sum(m.mot)
from rmtq mq
join rmo m on mq.id = m.id
where mq.another = 138;
返回值 = 2,这是正确的。但是当我把这段代码放在一个函数中时:
create or replace function get(another in number) return number
is ret number := 0;
begin
select sum(m.mot)
into ret
from rmtq mq
join rmo m on mq.id = m.id
where mq.another = another
return(ret);
end;
我打电话给:
exec dbms_output.put_line(get(138));
返回值 = 39,这是不正确的。 39 是多少?
【问题讨论】:
-
another需要用函数名限定或以不同的方式命名形参。名称解析自下而上进行,这意味着您的查询认为another是rmtq表中列的名称,而不是形参的名称。 -
尝试将函数参数命名为
another_in,这样您就知道它是IN参数。 -
Related question 带有解释您所看到内容的文档链接。