Трудно сказать, что вы вставляете. Вы можете использовать EXECUTE IMMEDIATE, чтобы сделать INSERT ... SELECT достаточно легко, но я подозреваю, что это не то, что вам нужно, и, вероятно, вы не просто хотите цикл вокруг EXECUTE IMMEDIATE.
Если вставка из нескольких таблиц - это не то, что вам нужно, вы можете использовать EXECUTE IMMEDIATE в блоке PL / SQL и / или в FORALL
create table test_forall_dyn (val varchar2(1));
declare
type tab_char is table of varchar2(1) index by binary_integer;
t_char tab_char;
begin
for i in 1..26 loop
t_char(i) := chr(64 + i);
end loop;
forall i in 1..26
execute immediate
'begin
insert into test_forall_dyn (val) values(:1);
insert into test_forall_dyn (val) values(:1);
end;'
using t_char(i);
end;
/
select count(*) from test_forall_dyn;