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

Sql 将相关值传递给Oracle中的函数,sql,oracle,plsql,oracle11g,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。 对于我想做的事

我有这个功能:

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。
对于我想做的事情,还有其他解决方案吗?提前感谢。

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

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;

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

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;

日期值作为数字?@WernfriedDomscheit它是波斯日期,在函数中被转换成公历日期,但显然这不是重点。@APC它大约是300个分类账,每个分类账都应该返回1到73条记录。日期值作为数字?@WernfriedDomscheit它是波斯日期,在函数中被转换成公历日期但显然这不是重点。@APC大约是300个ledger_fk,每个应该返回1到73条记录。正如OP提到的,它只在12c发布后可用,但所需结果将由上述函数提供。正如OP提到的,它只在12c发布后可用,但所需结果将由上述函数提供功能。