将相关值传递给Oracle中的函数

时间:2019-04-08 09:36:33

标签: sql oracle plsql oracle11g

我具有此功能:

FUNCTION balance_gl_s(p_Date VARCHAR2,   p_Ledgerid NUMBER)

我想在这样的查询中使用一个函数:

select *
from ledgers l
cross apply (select *
            from table(gl_balance_s.balance_gl_s(13970914, l.ledger_fk)))

我用它搜索了一下,发现此语法在12c版本之后有效,并且我使用的是11g。 我还有其他解决方案吗?预先谢谢你。

1 个答案:

答案 0 :(得分:0)

您可以创建另一个函数并在循环中调用第一个函数:

CREATE OR REPLACE FUNCTION balance_gl_s_outer(p_Date VARCHAR2) RETURN your_type

PIPELINED IS
Rec your_type;
cursor cr is
 select l.ledger_fk from ledgers l;

BEGIN

for rr in cr loop

 FOR Rec IN (select *
              from table(gl_balance_s.balance_gl_s(p_Date,
                                                   rr.ledger_fk))) LOOP
  PIPE ROW(Rec);

  END LOOP;
end loop;

end;