Neste post, vamos ver uma dica para obter números aleatórios. A ORACLE disponibiliza a package DBMS_RANDOM. Vamos consultar as funções disponíveis usando o seguinte comando no SQL-Plus:
SQL> desc dbms_random PROCEDURE INITIALIZE Nome do Argumento Tipo In/Out Default? ------------------------------ ----------------------- ------ -------- VAL BINARY_INTEGER IN FUNCTION NORMAL RETURNS NUMBER FUNCTION RANDOM RETURNS BINARY_INTEGER PROCEDURE SEED Nome do Argumento Tipo In/Out Default? ------------------------------ ----------------------- ------ -------- VAL BINARY_INTEGER IN PROCEDURE SEED Nome do Argumento Tipo In/Out Default? ------------------------------ ----------------------- ------ -------- VAL VARCHAR2 IN FUNCTION STRING RETURNS VARCHAR2 Nome do Argumento Tipo In/Out Default? ------------------------------ ----------------------- ------ -------- OPT CHAR IN LEN NUMBER IN PROCEDURE TERMINATE FUNCTION VALUE RETURNS NUMBER FUNCTION VALUE RETURNS NUMBER Nome do Argumento Tipo In/Out Default? ------------------------------ ----------------------- ------ -------- LOW NUMBER IN HIGH NUMBER IN
Como se pode ver, existem diversas funções para gerar números aleatórios. No exemplo a seguir, vou demonstrar como gerar números aleatórios inteiros entre 1 e 100:
SQL> select trunc(dbms_random.value(1, 100)) num from dual; NUM ---------- 89 SQL> select trunc(dbms_random.value(1, 100)) num from dual; NUM ---------- 9 SQL> select trunc(dbms_random.value(1, 100)) num from dual; NUM ---------- 39
No exemplo, três instruções SQL consecutivas exibem como a função DBMS_RANDOM.VALUE funciona. Ela retorna um valor NUMBER. Como sabemos o tipo NUMBER pode armazenar tanto números inteiros como números ponto flutuante. Para retornar um inteiro, foi utilizado a função TRUNC. A função utilizada permite passar o range da randomização, o que pode ser muito útil.
É isso ai, espero ter ajudado a quem procura uma maneira de gerar números randômicos em ORACLE.
Até mais!
Nenhum comentário:
Postar um comentário