Oracle在匿名块中链接了函数

时间:2013-11-19 06:37:01

标签: oracle recursion plsql anonymous

我想知道是否有办法做这样的事情。

declare 
 function a(apar in varchar2(1000)) return number;
 function b(bpar in varchar2(1000)) return number
 as 
 begin 
--   something something something with the a() function
 end b;

 function a(apar in varchar2(1000)) return number
 as
 begin
      -- something with the b(bpar in varchar2(1000)) function
 end a;

 select f from tbl where b(f) = 1;

end

这是我用来检查是否需要从select中显示行的递归。 我想在匿名区块中执行此操作,但oracle告诉我,我错了:

ORA-06550 : the b function cannot be used...

如何克服这个?

1 个答案:

答案 0 :(得分:3)

如果已在匿名块中声明了函数,则不能在查询中使用函数。

你需要CREATE这些函数,或者更好,但它们一起放在一个包中(你还需要在包头中定义它们)。