что если у меня есть два блока, которые генерируют строки, и я хочу сохранить все строки в один массив
Если блоки являются отдельными программными модулями или иным образом отсоединены, может быть, даже могут быть выполнены в разных порядках, вам нужна некоторая логика, которая может сказать, заполнен ли целевой массив уже. Одним из решений является использование (частной) процедуры PL / SQL для управления этим.
procedure populate_varray
( p_tgt in out name_options
, p_new in name_options)
is
n pls_integer;
begin
if p_tgt is null
or p_tgt.count() = 0
then
p_tgt := p_new;
elsif p_new is not null
and p_new.count() > 0
then
n := p_tgt.count();
for idx in 1 .. p_new.count() loop
p_tgt.extend();
p_tgt(n + idx) := p_new(idx);
end loop;
end if;
end populate_varray;
Примечание: не проверенный код, пожалуйста, прокомментируйте ниже, если есть ошибки:)
Вы бы назвали это так:
-- Block 1
....
populate_varray ( dd_name_options_c
, name_options(string1, string2, string3, string4));
....
-- Block 2
....
populate_varray (dd_name_options_c
, name_options(string5, string6) );