объединить значения двух строк в один цикл - PullRequest
0 голосов
/ 29 апреля 2019

у меня ниже двух строк

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 и Qty, чтобы вставить их как одну строку в таблицу

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019

Вам не нужен цикл (т. Е. 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>
0 голосов
/ 29 апреля 2019

Я сделал Решение, как показано ниже

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;
...