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发布后可用,但所需结果将由上述函数提供功能。