簡體   English   中英

如何在Oracle中使用Function / s

[英]How is Function/s used in Oracle

我有架構

它有表,視圖,同義詞,過程和函數。

我有一個查詢它是從這個函數中選擇的東西,我不知道它是如何做到的。

有人能幫助我嗎

查詢非常復雜,但這里是查詢的簡單版本。 它從View中選擇一些東西,從Function中選擇一些東西。

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
some_FN_currentevents在schema中的函數中。
some_vw_fact_det在架構中處於視圖中。
so_vw_flat_dim也是模式中的視圖。
我只需要一些關於如何在這里或你自己的例子中使用函數和視圖的例子。

替換這個:

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表類型,如果這個函數沒有返回一個類型是不可能使這個查詢工作,這個修改工作。

我不完全確定這里的問題是什么,但我會寫一些關於如何使函數返回表的東西。

在Oracle中可以編寫一個返回TABLEPIPELINED函數。 有幾個簡單的步驟使這項工作:

  1. 創建TABLE數據類型。
  2. 創建一個PIPELINED函數,該函數返回您創建的表數據類型
  3. 函數內部調用PIPE ROW(x); 向要添加的表中添加行。
  4. SELECT * from TABLE(my_function(params));形式的SQL語句中調用該函數SELECT * from TABLE(my_function(params));

如果您正在尋找一些文檔,請查看有關該主題Oracle文檔 ,或者查看此AskTom頁面

如果這不能回答問題,您是否可以編輯問題以使其更清楚您的要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM