加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用Oracle PL / SQL For循环迭代逗号分隔的字符串

发布时间:2020-12-12 15:14:35 所属栏目:百科 来源:网络整理
导读:我正在编写一段需要迭代字符串内容的代码,每个值用a分隔. 例如我有我的元素 v_list_pak_like varchar2(4000) := 'PEBO,PTGC,PTTL,PTOP,PTA'; 如何将它放入Array / Cursor中以在循环中迭代它? for x in (elements)loop -- do my stuffend loop; 我正在寻找非
我正在编写一段需要迭代字符串内容的代码,每个值用a分隔.

例如我有我的元素

v_list_pak_like varchar2(4000) := 'PEBO,PTGC,PTTL,PTOP,PTA';

如何将它放入Array / Cursor中以在循环中迭代它?

for x in (elements)
loop
   -- do my stuff
end loop;

我正在寻找非常简单的方法,如果可能的话,避免声明关联数组.

是否有可能创建一个函数来返回可用作for循环的输入的东西(与https://stackoverflow.com/a/19184203/6019417中可以使用的while相反)?

提前谢谢了.

您可以在纯SQL中轻松完成.有多种方法,见 Split comma delimited string into rows in Oracle

但是,如果你真的想在PL / SQL中这样做,那么你可以这样做:

SQL> set serveroutput on
SQL> DECLARE
  2    str VARCHAR2(100) := 'PEBO,PTA';
  3  BEGIN
  4    FOR i IN
  5    (SELECT trim(regexp_substr(str,'[^,]+',1,LEVEL)) l
  6    FROM dual
  7      CONNECT BY LEVEL <= regexp_count(str,',')+1
  8    )
  9    LOOP
 10      dbms_output.put_line(i.l);
 11    END LOOP;
 12  END;
 13  /
PEBO
PTGC
PTTL
PTOP
PTA

PL/SQL procedure successfully completed.

SQL>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读