tecnologia | consultoria | banco de dados

Oracle - Consulta aleatória e inserção de múltiplos registros

No Banco de Dados Oracle, existe a possibilidade de retornar registros aleatórios em uma consulta utilizando a procedure RANDOM da package DBMS_RANDOM.

A procedure RANDOM retorna um número aleatório positivo ou negativo.

SELECT DBMS_RANDOM.RANDOM FROM DUAL;
Resultado 1: -1640736766
Resultado 2: 58909080


Para o exemplo da consulta aleatória, foi criada uma tabela com os meses do ano.

Em cada consulta realizada os registros serão retornados em ordem aleatória:

SELECT *
FROM TB_MESES
ORDER BY DBMS_RANDOM.RANDOM;


Retornar 3 meses aleatórios a cada consulta:

SELECT *
FROM (SELECT *
FROM TB_MESES
ORDER BY DBMS_RANDOM.RANDOM)
WHERE ROWNUM <= 3;


Tabela utilizada no exemplo:


CREATE TABLE TB_MESES
(
CD_MES NUMBER,
NM_MES VARCHAR2(10)
);
INSERT ALL
INTO TB_MESES (CD_MES, NM_MES) VALUES (1, 'Janeiro')
INTO TB_MESES (CD_MES, NM_MES) VALUES (2, 'Fevereiro')
INTO TB_MESES (CD_MES, NM_MES) VALUES (3, 'Março')
INTO TB_MESES (CD_MES, NM_MES) VALUES (4, 'Abril')
INTO TB_MESES (CD_MES, NM_MES) VALUES (5, 'Maio')
INTO TB_MESES (CD_MES, NM_MES) VALUES (6, 'Junho')
INTO TB_MESES (CD_MES, NM_MES) VALUES (7, 'Julho')
INTO TB_MESES (CD_MES, NM_MES) VALUES (8, 'Agosto')
INTO TB_MESES (CD_MES, NM_MES) VALUES (9, 'Setembro')
INTO TB_MESES (CD_MES, NM_MES) VALUES (10, 'Outubro')
INTO TB_MESES (CD_MES, NM_MES) VALUES (11, 'Novembro')
INTO TB_MESES (CD_MES, NM_MES) VALUES (12, 'Dezembro')
SELECT 1 FROM DUAL;
COMMIT;

Segue acima, exemplo de inserção de vários registros com apenas uma query em uma tabela. Também possível inserir registros em mais de uma tabela.
Data publicação: 21:36 24/03/2015
Perfil
Olá jovem Padawan, seja bem vindo! Este site foi criado com o intuito de compartilhar um pouco de conhecimento de Tecnologia da Informação e Business Intelligence.

Linkedin  Youtube

"O sorriso é o símbolo do vencedor." (Masaaki Hatsumi)


Leandro Sacramento, Todos os direitos reservados - 2012 - 2020