DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 
DevWare  
Novidade: DevMedia lança o DevWare - Saiba mais!

Números Aleatórios no Oracle – Package DBMS_RANDOM - Parte 2

Continuando com nosso artigo sobre Package DBMS_RANDOM , veremos agora DBMS_RANDOM.STRING e DBMS_RANDOM.NORMAL .

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?

Continuando com nosso artigo sobre Package DBMS_RANDOM  , veremos agora DBMS_RANDOM.STRING e DBMS_RANDOM.NORMAL

 

 4. DBMS_RANDOM.STRING

Esta função gera uma string aleatória, possuindo a seguinte chamada:

DBMS_RANDOM.STRING(tipo IN CHAR, tamanho IN NUMBER) RETURN VARCHAR2

 

O parâmetro “tamanho” determina a quantidade de caracteres da string a ser gerada. Já o parâmetro “tipo” especifica o formato e aceita os seguintes valores:

'u', 'U': gera string com caracteres maiúsculos.

'l', 'L': gera string com caracteres minúsculos.

'a', 'A': gera string com caracteres maiúsculos e minúsculos.

'x', 'X': retorna string com números e letras maiúsculas (obs: não gera letras minúsculas).

'p','P': retorna string com qulaquer caractere que possa ser impresso (letras maiúsculas e minúsculas, números e caracteres como “!”, “%”, “@”, etc.).

 

Alguns exemplos:

(1) produz string alfanumérica (números e letras maiúsculas) de tamanho 8:

SQL> SELECT DBMS_RANDOM.STRING('x',8) FROM DUAL;

VALUE

----------

6NIY2QIV

 

(2) produz string com caracteres maiúsculos e minúsculos de tamanho 5:

SQL> SELECT DBMS_RANDOM.STRING('a',5) FROM DUAL;

VALUE

----------

ARxrg

 

 

5. DBMS_RANDOM.NORMAL

Função que retorna números aleatórios de uma distribuição normal padrão. Não aceita nenhum argumento como entrada.

SQL> SELECT DBMS_RANDOM.NORMAL FROM DUAL;

VALUE

----------

0,5134922

 

6. DBMS_RANDOM.SEED

Segundo o manual de referência da Oracle, as funçoes VALUE e STRING não precisam ser incializadas com uma “semente” antes de sua utilização. O Oracle as incializará automaticamente com a data/hora do sistema, userid e id do processo caso nenhuma inicialização explícita seja executada. Porém se houver a necessidade de uma inicialização explícita, deve ser utilizada a procedure SEED.

DBMS_RANDOM.SEED(semente IN BINARY_INTEGER);

DBMS_RANDOM.SEED(semente IN VARCHAR2);

 

A procedure aceita como semente tanto um número como uma string (de até 200 caracteres). Infelizmente o manual “Oracle® Database PL/SQL Packages and Types Reference” não fornece nenhuma informação mais “técnica” sobre esta procedure e nem sobre o método de geração de aleatórios. A única informação adicional do manual é a indicação de que se a uma mesma semente for utilizada em diferentes execuções, a sequência produzida pela função VALUE ou pela função STRING será sempre a mesma. Para produzir sequências diferentes em diferentes rodadas, basta não realizar a chamada para a procedure SEED.

 

O exemplo abaixo inicializa DBMS_RANDOM com a semente 25042011:

 

EXECUTE DBMS_RANDOM.SEED(25042011);

Assim finalizo este artigo.


Eduardo Corrêa Gonçalves
Doutorando e mestre em Ciência da Computação pelo Instituto de Computação da Universidade Federal Fluminense (IC/UFF). Atua principalmente nas seguintes linhas de pesquisa: Mineração de Dados, Algoritmos, Banco de Dados e XML.
O que você achou deste post?

    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
[Fechar] Você precisa estar logado para dar seu feedback.

Clique aqui para efetuar o login

Caso não tenha um cadastro DevMedia, clique aqui para se cadastrar (gratuito)
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03