0

我有架构

它有表、视图、同义词、过程和函数。

我有一个查询,它正在从这个函数中选择东西,我不知道它是如何做到的。

有人能帮助我吗

查询非常复杂,但这里是查询的简单版本。它正在从视图中选择一些东西,从功能中选择一些东西。

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 

仅供参考
some_FN_currentevents 在模式中的函数中。
some_vw_fact_det 在模式中可见。
so_vw_flat_dim 也在模式中查看。
我只需要一些关于如何在此处或您自己的示例中使用函数和视图的示例。

4

2 回答 2

1

我不完全确定这里的问题是什么,但我会写一些关于如何使函数返回表的内容。

在 Oracle 中可以编写一个PIPELINED返回TABLE. 有几个简单的步骤可以完成这项工作:

  1. 创建TABLE数据类型。
  2. 创建一个PIPELINED返回您创建的表数据类型的函数
  3. 在函数调用内部PIPE ROW(x);向将要返回的表添加行。
  4. 在形式的 SQL 语句中调用函数SELECT * from TABLE(my_function(params));

如果您正在寻找一些文档,请查看有关该主题的 Oracle 文档,或者查看此AskTom 页面

如果这不能回答问题,您可以编辑问题以使其更清楚您在问什么。

于 2013-05-29T22:51:08.413 回答
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 表类型,则此修改有效,如果此函数不返回类型,则此查询无效。

于 2013-05-29T18:50:32.733 回答