Geração de Dados | Oracle
A geração de valores aleatórios em Oracle para valores numéricos e datas, por exemplo, e recorrendo ao utilitário DBMS_RANDOM é fácil e traduz-se em resultados que fazem sentido e que podem posteriormente ser utilizados em testes.
Já a geração de cadeias alfanuméricas recorrendo aquele utilitário resulta em valores sem utilização prática. Acresce ainda que muitas vezes os testes de performance a bases de dados têm que ser feitos utilizando tabelas interligadas entre si por chaves estrangeiras. Ora isso não fazível recorrendo a strings do tipo ‘wqT45dfreDSkutRR’.
Então a melhor forma de ultrapassar esta deficiência é utilizar tabelas de lookup em que inserimos listas com possíveis valores, por exemplo, para nomes de pessoas, ou denominação de localidades ou países.
Figura 1: A tabela Colaborador.
A Query 1 que nos vai servir de caso de estudo devolve três campos: “Número de Funcionário”, “Nome” e “Data de Entrada”, em que para o primeiro e último campo pode-se aplicar o pacote DBMS_RANDOM mas em que o “Nome” será gerado a partir da coluna “Nome” da tabela “Colaborador” (Figura 1).
Query 1: Geração de valores aleatórios
SELECT “Número de Funcionário”, “Nome”, “Data de Entrada”
FROM (SELECT TRUNC(DBMS_RANDOM.VALUE (100, 1000)) “Número de Funcionário”,
SYSDATE + DBMS_RANDOM.VALUE (-365* 15, -1) “Data de Entrada”
FROM lamy
CONNECT BY LEVEL <= 100) tabela1
LEFT OUTER JOIN (SELECT DISTINCT “Nome” FROM “Colaborador”
ORDER BY DBMS_RANDOM.VALUE) tabela2 ON 1 = 1
ORDER BY DBMS_RANDOM.VALUE;
Conjunto resultado:
Figura 2: Resultado da geração de valores aleatórios para a coluna Nome.