У меня есть коллекция A (таблица VARCAHR2), и я хочу переместить содержимое в два других, B и C (таблицы VARCHAR2), если определенная строка из A начинается с определенного значения.
Для этого у меня есть эта часть кода:
...
for k in 1 .. v_message.count loop
if substr(v_message(k), 1, 3) = 'AAA'
then
l_poz := k;
dbms_output.put_line('the position there AAA start is at line (' || l_poz || ')');
exit;
end if;
end loop;
for k in 1 .. v_message.count loop
if k < l_poz
then
h := h + 1;
v_header.extend(1);
v_header(h) := v_message(k);
dbms_output.put_line('v_header(' || h || ') = ' || v_header(h));
else
l := l + 1;
v_lines.extend(1);
v_lines(l) := v_message(k);
dbms_output.put_line('v_lines(' || l || ') = ' || v_lines(l));
end if;
end loop;
...
v_message - это коллекция A.
v_header - это коллекция B.
v_lines - это коллекция C.
Тестовое сообщение должно выглядеть следующим образом:
ABX * xxx # dddd
ADF * xxx # dddd
SFM * xxx # ffff
AAA * xxx # мммм
ABX * гггг # рррр
ммм * jjj # llll
банкомат * jjj # рррр
SFM * ххх # тттт
и я хочу разделить это сообщение на:
ABX * xxx # dddd
ADF * xxx # dddd
SFM* xxx # ffff
и
AAA * xxx # мммм
ABX * ггг # рррр
ммм * jjj # llll
ATM * jjj # rrrr
SFM * xxx # tttt
Мой код работает нормально, но мне интересно, можно ли сделать это разделение за один разизколлекция А.
Возможно ли это, пожалуйста?