2015-09-25 56 views
0

所以我有一個類型:通SELECT結果給PL/SQL函數,需要嵌套表作爲參數

create or replace TYPE t_text IS TABLE OF VARCHAR2(200) 

和一個函數,使用t_text類型的輸入值,但這

function(
(SELECT CAST(MULTISET(SELECT column_name FROM table_name) AS T_TEXT) FROM DUAL) 
) 

無法正常工作。我以前無法創建集合,因爲此功能在視圖中使用。有什麼解決方法嗎?

編輯:實際上,精確的問題是,在

select multiple_replace( 
    'text', 
    CAST(MULTISET(SELECT column_name1 FROM table_name) AS T_TEXT), 
    CAST(MULTISET(SELECT column_name2 FROM table_name) AS T_TEXT) 
) A from dual; 

兩個colletions的元素以相同的順序並不因爲它們是在表中。所以結果不同於創建集合批量收集,我不能用於視圖。

回答

0

如何:

SELECT function(CAST(MULTISET(SELECT column_name FROM table_name) AS T_TEXT)) 
FROM DUAL 
+0

謝謝你,我闡述了問題。 – dem31

0

好吧,這只是簡單的

select multiple_replace( 
    'text', 
    CAST(MULTISET(SELECT column_name1 FROM table_name ORDER BY id) AS T_TEXT), 
    CAST(MULTISET(SELECT column_name2 FROM table_name ORDER BY id) AS T_TEXT) 
) A from dual; 
+0

什麼是'multiple_replace()'?它似乎不是一個標準功能..? – Ben

+0

是的,這是我發現的一個自定義函數,它在循環中使用replace('text',collection1(i),collection2(i))。 – dem31

相關問題