Login:

iMasters | Por uma internet mais criativa e dinâmica

Feeds

Oracle

Feed da seção Oracle

Newsletter de Oracle


Segunda-feira, 21/10/2002 - 01:59 - Por Rodrigo Almeida
Seções relacionadas:

Randomização no Oracle


Olá !

Hoje veremos como gerar números aleatorios dentro do banco de dados, mais conhecido como Random (ou Randomize), para utilizarmos este componete do Oracle, teremos que conhecer o pacote DBMS_RANDOM.

Dentro deste pacote existe 4 tipos de componentes, onde vou falar um pouco sobre cada um logo abaixo, onde cada componente tem uma utilidade diferente dentro do sistema.

Componente Tipo Descrição
Initialize Procedimento Inicializa o gerador, como números acima de 5 digitos.
Seed Procedimento Reinicializa o processo de geração.
Terminate Procedimento Termina a geração dos números.
Random Função Recebe o número randômico.

Preste atenção pois quando formos solicitar o pacote DBMS_RANDOM no SQL*PLUS ele irá retornar mais de 4 funções, dependendo da versão que você tem do Oracle instalado no seu PC, algumas delas não podem ser executadas.

Voltando ao assunto, vou passar um exemplo de como criar um função utilizando os principios de ramdomização de números.

SQL >
VARIABLE MSG VARCHAR2 (2500)
SQL >
SET AUTOPRINT ON
SQL >
DECLARE
2
NUMERO NUMBER;
3
BEGIN
4
NUMERO := EXTRACT (HOUR FROM SYSDATE) +
5
EXTRACT (MINUTE FROM SYSDATE);
6
DBMS_RANDOM.INITIALIZE (NUMERO);
7
:MSG := 'NÚMERO INICIAL =' || NUMERO;
8
:MSG := :MSG || CHR(10) || 'NÚMEROS GERADOS =';
9
FOR I IN 1..7 LOOP
10
NUMERO := DBMS_RANDOM.RANDOM;
11
:MSG := :MSG || NUMERO || ' ';
12
END LOOP;
13
DBMS_RANDOM.TERMINATE;
14
END;
15
/

Agora vamos analizar linha por linha no código acima para você entender melhor o que está acontecendo.

1º e 2º Linha : Declarei uma variavel local chamada Número do tipo Número (Number)

3º Linha : Abri meu espaço para programação

4º e 5º Linha : Peguei a variável Numero e igualei ao Minuto e a hora do sistema atual.

6º Linha : Inicializei o pacote DBMS_Random no programa

7º Linha : Pegamos a variavel MSG que foi declarada no 1º SQL e inserimos um texto para melhorar a exibição no resultado.

8º Linha : Fizemos a mesma coisa que na 7º linha, mais com a função CHR.

9º Linha : Coloquei uma condição FOR para gerar 7 tipos de números aleatorios.

10º Linha : Neste instante a variável Numero está "fazendo" os números aleatorios.

11º Linha : A mesma coisa que na linhas 7 e 8, mais agora para exibir os resultados dos números.

12º Linha : Encerramos a condição FOR depois que o sistema retorno 7 valores.

13º Linha : Estamos agora fechando o pacote DBMS_Random.

14º Linha : Fechamos a área de programação.

15º Linha : Mandamos executar no banco de dados.

UFA! acabamos o código e deu para entender cada linha feita, agora você deve ter percebido que quando você mandar executar este código no seu banco de dados ele retorno alguns números negativos, isso se deve porque o pacote DBMS_RANDOM retorna valores negativos e positivos, se quizer melhorar isso, o pacote disponibiliza uma função chamada ABS,onde ele só retorna valores positivos.

Na 10º linha faça está mudança :

NUMERO := ABS(DBMS_RANDOM.RANDOM);

Enfim, agora você terá condições para construir sistema com números randômicos, como por exemplo um sistema com Senhas aleatorias ou códigos para produtos.

Um Abraço!

Todos os artigos de Rodrigo Almeida

0 comentários publicados

Poste um comentário


Os textos publicados neste espaço são de responsabilidade única de seus autores (colunistas e leitores) e podem não expressar necessariamente a opinião do iMasters.

Sobre o autor

Rodrigo Almeida formando em analise de banco de dados pela IBTA-SP, especialista em microeletrônica pela INSA-AIME na França e Oracle Certified Associate 9i. Já trabalhou em empresas como BTC Texaco, DuPont do Brasil, Vivo São Paulo, Procwork, DBACorp e atualmente é DBA Oracle da Affinia Automotiva.


Indique para um amigo

captcha

TI SHOP Produtos iMasters

  • Lançamento: CD-ROM Treinamento Aplicado de SQL - Lançamento! Treinamento Aplicado de SQL - Aprenda a trabalhar com SQL com bancos de dados Oracle e SQL Server. São mais de 100 tópicos explicados por Mauro Pichilliani, um articulistas mais lidos do iMasters. Aproveite! Apenas R$ 69,90 no TI SHOP.
  • Lançamento: Livro iMasters "O Encontro de 2 Mundos"- Este livro conta com 56 crônicas de profissionais mais admirados e influentes do mercado brasileiro de Internet. Aproveite o preço especial para leitores do iMasters. Apenas R$ 40,00 e envio imediato!
  • DVD Curso Completo de Photoshop - Do conceito à finalização Lançamento! Curso Completo de Photoshop, em DVD, com mais de 230 aulas dividas em 4 módulos: conceito, básico, avançado e finalização. Apenas R$ 69,50 no TI SHOP - Frete com 50% de desconto
  • DVD Javascript Starter - Curso Completo Com mais de 9 horas de vídeo-aulas, é um curso completo sobre Javascript. Ideal para quem deseja aprender a linguagem. Apenas R$ 64,90 no TI SHOP - Frete com 50% de desconto!

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.