Dá pra fazer isso de várias formas.
Inclusive dá pra fazer isso direto num SQL, sem usar PLSQL
Mas como você está se quebrando pra fazer, eu vou postar abaixo um exemplo BEM BASICO.
Não to usando nenhuma otimização nem melhores técnicas pra resolver esse problema.
(Talvez depois eu coloco outras formas melhores).
Selecionar tudo
declare
vnome varchar2(100);
vmod number;
begin
for x in 1..1000
loop
vmod := mod(x,4);
if vmod = 1 then vnome:='PAULO';
elsif vmod = 2 then vnome:='RICARDO';
elsif vmod = 3 then vnome:='JOAO';
elsif vmod = 0 then vnome:='MARIA';
end if;
--INSERT INTO...vai aqui.. VNOME conttem o nome que você quer.
--Commita de 10 em 10.
if mod(x,10)=0
then commit;
end if;
end loop;
commit;
end;
Existem várias técnicas pra ser usadas nisso.
Por exemplo, BULK collection, arrays, apenas SQL.
Mas essas coisas não vem ao caso por agora.