segunda-feira, 8 de março de 2010

DBMS_RANDOM

O primeiro assunto a ser tratado é sobre a package dbms_random.
Assim como o nome sugere, é uma package utilizada para gerar valores aleatórios, tanto números quanto strings. Vou mostrar exemplos simples e práticos sobre a aplicação da package.

Verifique abaixo:


Busca um valor aleatório entre 1 e 10, por default, o intervalo é entre 0 e 38.
select dbms_random.value(1,10)
from dual;

Gera uma string de 20 posições apartir de um valor de entrada 'A'.
declare
   str_1 varchar2(20);
begin
   str_1 := dbms_random.string('A', 20);
   dbms_output.put_line('str_1: '||str_1);
end;

Busca valores aleatórios.
SELECT dbms_random.normal
FROM dual;

Busca um rownum aleatório pelo order by.
select object_name
from (select object_name
           from sys.all_objects
           order by dbms_random.value)
where rownum = 1;

O seed é um valor gerado para iniciar o algorítmo que gera números aleatórios, para resetar o seed, basta executar a seguinte linha de comando:
exec dbms_random.seed(681457802);

Busca valores aleatórios a partir de um número.
declare
   ret pls_integer;
   init number(30);
BEGIN
   init := to_char(sys_extract_utc(current_timestamp), 'hh24miss');
   dbms_random.initialize(init);
   for i in 1..10 loop
      ret := dbms_random.random;
      dbms_output.put_line(ret);
      init := ret;
   end loop;
   dbms_random.terminate;
end;

Nenhum comentário:

Postar um comentário