我想知道是否有办法做这样的事情。
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...
如何克服这个?
答案 0 :(得分:3)
如果已在匿名块中声明了函数,则不能在查询中使用函数。
你需要CREATE
这些函数,或者更好,但它们一起放在一个包中(你还需要在包头中定义它们)。