Por vezes gostaríamos de preencher um campo de uma tabela com valores aleatórios. Abaixo o script que pode ajuda-lo a cumprir esta tarefa.
Criei uma tabela teste para acumular os valores para podermos analisar o que foi feito pelo script.
Neste caso poderia utilizar o valor vCDFNC tranquilamente porque o valor já é um número aleatório e é isso que quero porém em alguns casos posso querer inserir um valor aleatório que vem de um SELECT de um campo VARCHAR. Neste caso passo à função RANDOM os valores minimos e maximos que quero. Aqui no exemplo tenho 124 registros na tabela TPT154, isto me traz um valor neste intervalo e após isso seleciono o campo VARCHAR da tabela cujo registro é exatamente este número.
Verifique que neste script estão contidas várias técnicas : selecionar um registro randomicamente, selecionar apenas um registro, ou vários aleatóriamente, etc.
CREATE TABLE TESTE
(
ID INTEGER PRIMARY KEY,
vCDFNC INTEGER,
aCDFNC VARCHAR(40)
);
DECLARE
vCDFNC INTEGER;
n INTEGER;
aCDFNC VARCHAR(40);
BEGIN
n := 1;
WHILE n <>
LOOP
SELECT ROUND( dbms_random.VALUE(1,124)) INTO vCDFNC FROM dual;
SELECT DSFNC INTO aCDFNC
FROM ( SELECT a.dsfnc, ROWNUM rnum FROM ( SELECT * FROM TPT154
ORDER BY CDFNC, ROWID ) a WHERE ROWNUM <= vCDFNC )
WHERE rnum > vCDFNC - 1;
INSERT INTO TESTE VALUES( n, vCDFNC, aCDFNC );
n := n + 1;
END LOOP;
END;
Espero que lhe seja útil em algum momento. Pode perguntar se não entender via comentário que terei prazer em lhe ajudar.
Até a próxima.
Reginaldo
Assinar:
Postar comentários (Atom)


Nenhum comentário:
Postar um comentário