2016-06-13 62 views
0

我試圖創建一個varChar表來格式化一個字符串 (基本上我試圖做一個騙子split()函數)。動態創建varchar表

所以,如果我做

type tableOfStrings is table of varchar2(50); 
vWords tableOfStrings := tableOfStrings ('a','few','words'); 
dbms_output.put_line(vwords.count); -- 3 

但如果我嘗試

type tableOfStrings is table of varchar2(50); 
vTemp varchar(300) := '''a'',''few'',''words'''; 
vWords tableOfStrings := tableOfStrings (vTemp); 
dbms_output.put_line(vwords.count); -- 1 (it's a single string 'a','few','words') 

我想一個字符串傳遞給函數,已添加到表中的每個字。

喜歡的東西

FUNCTION FLABELFORMAT(pMyString in varchar2) return varchar2 

type tableOfStrings is table of varchar2(50); 
vWords tableOfStrings := tableOfStrings (pMyString); 

for i in 1 .. vWords.count loop 
    {do some cool stuff} 
end loop; 
END FLABELFORMAT 

我怎樣才能做到使用類似vWords tableOfStrings := tableOfStrings (pMyString);,並把它添加的每個值表?

TIA

回答

0

基於this answer,試試這個:

SELECT regexp_substr('a,few,words', '[^,]+', 1, LEVEL) 
FROM dual 
CONNECT BY regexp_substr('a,few,words', '[^,]+', 1, LEVEL) IS NOT NULL; 
+0

不作爲 「簡單」 爲我所期待的,但它的工作原理。謝謝。 – Travis