Random avec Oracle

Random avec Oracle - SQL/NoSQL - Programmation

Marsh Posté le 08-06-2008 à 18:24:25    

Alors voila, après midi un peu studieuse, et je bloque sur un truc avec Oracle 10g.
Comme le foot commence, je vais arreter, mais bon, va bien falloir que je trouve.
J'ai installer le script dbmsrand.sql fournit avec Oracle qui permet de générer des nombres aléatoires.
A coté de ca, j'ai une table avec des valeurs, dont je connais le min possible et le max.
Je veux faire une requete qui me renvoit un nombre aléatoire n'existant pas dans la table en question.
Voila ce que je fait :

Code :
  1. select trunc(dbms_random.value(11,1000)) num from dual
  2. where num not in (select numero from table);


J'ai un charmant message : "num" : identificateur non valide.
Donc si quelqu'un connait la syntaxe pour réaliser ce type de requete, ca m'arrangerait, j'ai essayer un tas de trucs, sans résultat. J'ai l'impression que le nom que l'on attribue à une valeur dans le select ne peut pas servir dans la clause where. N'étant pas un pro Oracle, je galère :)
Merci d'avance à tous !


---------------
"Ne jamais faire confiance à un truc qui peut saigner 4-5 jours par mois sans crever !"
Reply

Marsh Posté le 08-06-2008 à 18:24:25   

Reply

Marsh Posté le 08-06-2008 à 20:51:22    

SELECT *  
FROM  
(
select trunc(dbms_random.value(11,1000)) num  
from dual
)
where num not in (select numero from table);
 
Le truc dangereux avoir cela, c'est que si le nombre généré est dans ta table, il peut te renvoyer rien du tout.  
 
Donc je te conseille de faire cela dans une fonction PL/SQL dans laquelle tu mets une boucle qui boucle sur une variable tant que celle-ci ne vaut rien.  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed