在一个循环中连接两个字符串的值

时间:2019-04-29 17:08:38

标签: plsql oracle-apex-18.2

我下面有两个字符串

Src Id = 1:2:3:4

Src Qty = 2:4:7:9

所以我想插入表

Insert into tbl (Src_id,qty) values (1,2);
Insert into tbl (Src_id,qty) values (2,4);
Insert into tbl (Src_id,qty) values (3,7); 

以此类推

那么我如何通过使用APEX_UTIL.STRING_TO_TABLE或其他方法来对齐Src id和Qty以将它们作为单行插入表中来使用循环

2 个答案:

答案 0 :(得分:0)

我已经按照以下方法完成了解决方案

DECLARE
   l_src_arr2   APEX_APPLICATION_GLOBAL.VC_ARR2;
   l_qty_arr2   APEX_APPLICATION_GLOBAL.VC_ARR2;

BEGIN
   l_src_arr2 := APEX_UTIL.STRING_TO_TABLE ('1:2:3:4');
   l_qty_arr2 := APEX_UTIL.STRING_TO_TABLE ('2:4:7:9');

   FOR i IN 1 .. l_src_arr2.COUNT LOOP

         DBMS_OUTPUT.PUT_LINE ('Src = ' || l_src_arr2 (i) || ' qty = ' || l_qty_arr2 (i));

   END LOOP;
END;

答案 1 :(得分:0)

您不需要循环(即PL / SQL);一切都可以用SQL完成。方法如下:

SQL> with test (src_id, src_qty) as
  2    (select '1:2:3:4', '2:4:7:9' from dual)
  3  select regexp_substr(src_id, '[^:]+', 1, level) ||','||
  4         regexp_substr(src_qty, '[^:]+', 1, level) result
  5  from test
  6  connect by level <= regexp_count(src_id, ':') + 1;

RESULT
---------------------------------------------------------
1,2
2,4
3,7
4,9

SQL>