Loops e PL/SQL nem sempre são necessários; este truque pode ser útil:
insert into emp(id, name, salary)
select rownum, 'Employee ' || to_char(rownum), dbms_random.value(2, 9) * 1000
from dual
connect by level <= 100;
gerará 100 registros, denominados Funcionário 1 a Funcionário 100 com salários "redondos" aleatórios entre 2000 e 9000.
As duas principais técnicas são:
- Uso de
connect by level <= n
para gerar n linhas em uma consulta em dual. - Uso de
dbms_random
pacote; há também uma função muito útildbms_random.string
que pode ser usado -- como o próprio nome sugere -- para gerar strings aleatórias de um certo comprimento contendo certos caracteres.