我正在编写一段需要迭代字符串内容的代码,每个值用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
原文链接:/oracle/205015.html但是,如果你真的想在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>