0

我有以下两个字符串

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 以将它们作为单行插入表中

4

2 回答 2

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>
于 2019-04-29T20:48:28.047 回答
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;
于 2019-04-29T17:59:28.403 回答