Sorteio em PL/SQL

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
lopes_andre
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Seg, 13 Out 2008 9:01 am
Localização: Lisboa

Viva,

Vou ter de fazer um procedimento em PL/SQL que não vai ser mais que um sorteio.

Vou ter de sortear 8 trabalhadores segundo dois parametros, a sua Categoria e uma Ponderação associada a cada categoria.

Até agora, os procedimentos que tinha feito seguiam todos a logica dos cursores. Neste procedimento vou ter de passar para outro nivel, penso...

De facto estou um pouco as escuras com esta tarefa.

1º, vou ter de definir quais vão ser as categorias que vão ser usadas no sorteio e vou ter de atribuir um ponderação para cada categoria. Isto é fácil(básico)

2º, vou ter de escolher trabalhadores das várias categorias que foram definidas que iriam a sorteio, o que não é nada de especial.

2º, vou ter de sortear 8 trabalhadores ao acaso segundo as ponderações das suas respectivas categorias. Aqui é que não tenho qualquer experiência anterior. Sei que em outras linguagens de programação existem funções que devolvem numeros ao acaso. Existem algumas funções de PL/SQL que me faça, isto ou terei de desenvolver uma função para o fazer?


Cumprimentos.
rerodrig
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Qua, 06 Fev 2008 10:33 am
Localização: Americana - SP
Renato Rodrigues

Dê uma olhada na package dbms_random, qualquer dúvida posta aí...falow!
lopes_andre
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Seg, 13 Out 2008 9:01 am
Localização: Lisboa

Viva,

Desde já obrigado rerodrig.

E em relação à ponderação? O dbms_random permite ter em conta ponderações/pesos?

Cumprimentos.
rerodrig
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Qua, 06 Fev 2008 10:33 am
Localização: Americana - SP
Renato Rodrigues

Com relação a ponderação, eu sinceramente não sei se tem como fazer o que você quer, você pode dar uma pesquisada melhor nessa package.

Dê uma olhada na dbms_random.value e na dbms_random.seed. Na primeira você consegue indicar uma faixa de valores para o random e a segunda serve para usar um "semente", que é por exemplo um número, que a package usa como ponto de partida para calcular o random. Se essa semente é sempre a mesma, acredito que vai cair sempre o mesmo número/letra.

Mas a package tem outras funções e procedures, dê uma olhada, não sei se essas te ajudarão.

Falow!
lopes_andre
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Seg, 13 Out 2008 9:01 am
Localização: Lisboa

Descobri um artigo que fala sobre este assunto, no entanto o tipo conseguio apenas resolver o problema fazendo um script em Perl.

Este é o artigo: http://use.perl.org/~bart/journal/33630

Será possivel usar este script no oracle?


Desde já obrigado.
rerodrig
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Qua, 06 Fev 2008 10:33 am
Localização: Americana - SP
Renato Rodrigues

Você pode escrever em PLSQL esse script que você postou.
lopes_andre
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Seg, 13 Out 2008 9:01 am
Localização: Lisboa

Exacto rerodrig,

No entanto eu não percebia bem o que estava no perl.

Entretanto já achei um outro artigo com uma explicação mais visual do modo de funcionamento dos random picks com ponderações.

Já agora deixo aqui o link: http://www.dailydoseofexcel.com/archive ... dom-sorts/

Mas acho q vou ter de os voltar a "chatear", para fazer isto vou pegar em matéria que nunca mexi antes.

Desde já obrigado.

André.
Responder
  • Informação