动态创建varchar表

时间:2016-06-13 20:10:23

标签: oracle plsql oracle11g

我试图创建一个varChar表来格式化字符串 (基本上我试图做一个骗子split()功能)。

所以如果我这样做

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

1 个答案:

答案 0 :(得分: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;