我有架构
它有表格,视图,同义词,程序和功能。
我有一个查询,它是从这个函数中选择的东西,我不知道它是怎么做的。
有人可以帮助我吗
查询非常复杂,但这里是查询的简单版本。 它从View中选择一些东西,从函数中选择一些。
Select
d.test1,
d.test2,
d.test3,
d.test4,
f.test4,
f.test5
from TABLE(some_FN_currentevents(
?orgkey::0?,
?assettypekey::0?,
?nonflag?::null?,
?disflsg?::null?,
?devflag?:null?,
?wrkflag?:nmull?
)) t
JOIN some_vw_fact_det d on t.intval = d.test4
join so_vw_flat_dim f on d.test9 = f.orgkey
只是fyi 答案 0 :(得分:1)
替换这个:
TABLE(some_FN_currentevents(
?orgkey::0?,
?assettypekey::0?,
?nonflag?::null?,
?disflsg?::null?,
?devflag?:null?,
?wrkflag?:nmull?
)) t
这个
TABLE(select some_FN_currentevents(
?orgkey::0?,
?assettypekey::0?,
?nonflag?::null?,
?disflsg?::null?,
?devflag?:null?,
?wrkflag?:nmull?
) from dual) t
如果你的函数返回一个oracle表类型,如果这个函数没有返回一个类型是不可能的,那么这个修改有效,使得这个查询有效。
答案 1 :(得分:1)
我不完全确定这里的问题是什么,但我会写一些关于如何使函数返回表的内容。
在Oracle中可以编写一个返回PIPELINED
的{{1}}函数。有几个简单的步骤可以使这项工作:
TABLE
数据类型。TABLE
函数,返回您创建的表数据类型PIPELINED
内部,向要返回的表中添加行。PIPE ROW(x);
如果您要查找某些文档,请查看Oracle documentation on the subject,然后查看此AskTom page。
如果这不能回答问题,您是否可以编辑问题,使其更清楚您的要求。