Geração de Dados | Oracle

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.

Related Posts:

  • Data Warehousing - Conceitos e Modelos Data Warehousing - Conceitos e Modelos: é um novo livro sobre as técnicas fundamentais de desenho de data warehouses na perspectiva do modelo de dados Dimensional. É o primeiro livro desta área em Português de Portugal, é d… Read More
  • DBA | Isolamento de transacçõesAs normas ANSI SQL determinam os seguintes três tipos de isolamento transaccional nos sistemas de gestão de bases de dados: Dirty Read. A transacção T1 modifica um facto. Outra transacção T2 lê esse mesmo facto antes que T… Read More
  • DBA | Transacção Uma transacção agrupa um conjunto de operações que transformam a base de dados de uma estado consistente n para outro estado consistente n+1. Pode considerar-se que há uma história – ou cronograma ou processo – que modela/t… Read More
  • SYSDATE numa restrição CHECK em Oracle Como o valor de SYSDATE (data do sistema) é quase sempre diferente em cada momento de avaliação de uma cláusula CHECK então o Oracle não nos deixa fazer uma restrição desse tipo. Imagine-se, por exemplo, que se quer inse… Read More
  • Trigger para validação de data | OracleConsiderem-se as seguintes tabelas: Curso Disciplina Disciplina no Curso Pretende-se impedir que sejam introduzidas na tabela “Disciplina no Curso” datas de cessação inferiores à data actual. Como em Oracle não … Read More