【问题标题】:creating table of varchar dynamically动态创建 varchar 表
【发布时间】:2016-10-14 09:03:50
【问题描述】:

我正在尝试创建一个 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

【问题讨论】:

    标签: oracle plsql oracle11g


    【解决方案1】:

    基于this answer,试试这个:

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

    【讨论】:

    • 不像我希望的那样“简单”,但它确实有效。谢谢。
    猜你喜欢
    • 2012-05-03
    • 2018-08-12
    • 1970-01-01
    • 2017-02-25
    • 2016-08-20
    • 2017-01-31
    • 2011-12-03
    • 1970-01-01
    相关资源
    最近更新 更多