Banco de Dados - Oracle
Randomize Oracle
Como gerar números aleatórios dentro do banco de dados, mais conhecido como Random (ou Randomize).
por Rodrigo AlmeidaComo gerar números aleatórios dentro do banco de dados, mais conhecido como Random (ou Randomize). Para utilizarmos este componente do Oracle, teremos que conhecer o pacote DBMS_RANDOM.
Dentro deste pacote existem 4 tipos de componentes, onde falarei um pouco sobre cada, considerando que cada componente tem uma utilidade diferente dentro do sistema.
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, algumas delas não podem ser executadas.
Voltando ao assunto, passarei um exemplo de como criar um função utilizando os princípios de ramdomização de números.
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 analisaremos linha por linha do código acima para entendermos melhor o que está acontecendo.
1º e 2º Linha : Declarei uma variável 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 variável 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.
Enfim acabamos o código e deu para entender cada linha feita, agora você deve ter percebido que quando mandar executar este código no seu banco de dados ele retorna alguns números negativos, isso se deve porque o pacote DBMS_RANDOM retorna valores negativos e positivos, se quiser 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);
Agora você terá condições para construir sistema com números randômicos, como por exemplo um sistema com Senhas aleatórias ou códigos para produtos.
Espero que tenha solucionado algumas duvidas.
- Exportação de dados do SQL Server para o Oracle com assistente de importação do SQL ServerSQL
- Trigger Oracle (Básico)Oracle
- Análise de desempenho entre os bancos de dados SQL Sever x OracleSQL Server
- Uma libertação chamada OLAPOracle
- A importância da Qualidade dos dados nas empresasSQL Server