[SQL - Oracle 10g] Numéro aléatoire n'existant pas

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 :

select trunc(dbms_random.value(11,1000)) num from dual
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 :slight_smile:
Merci d’avance à tous !

As-tu essayé un:

select num
from (select trunc(dbms_random.value(11,1000)) num from dual)
where num not in (select numero from table)?

C’est simplement que “num” ne peut pas être utilisé dans le “where” vu que tu est en train de le définir plus haut … (enfin, là comme ça à froid, je dirais que c’est ça :))

J’édite parce que j’ai mis un truc stupide: ça ne vas pas résoudre ton problème, vu que si le nombre géneré par dbms_random est dans ta table, il ne va rien te rendre. Si je trouve une façon de le faire j’édite à nouveau …

[5 Min après]: en fait je vois pas comment tu pourrais faire ça dans une seul requête SQL, vu que dbms_random.value va a chaque fois te génerer une seule valeur, ça va forcément rien te rendre si après cette valeur est dans l’autre table. Par contre, ça devrait être faisable de trouver un algo adapté au problème. À mon avis il faudrait plus se tourner ves une fonction en PL/SQL que vers une requête simple.

Ouais c’est ce que je me résoud à penser, parce que j’ai beau avoir dit que j’allais arreter, j’ai continuer à essayer.
Et plus j’y pense, plus l’idée me semble con. Sachant que c’est pour un trigger, il va falloir que je déclare une valeur numérique, que je lui colle le resultat du random, et apres je traite. Mais bon ca va attendre lundi maintenant…
Merci pour le coup de main, si demain je trouve je posterais.

Bon, j’ai oublié de reposter, mais ca semblait evident.
On génère un nombre aléatoire dans une variable, et on fait une recherche par rapport à cette variable.
Par contre, j’ai pas réussi à faire marcher un IF EXISTS sous Oracle. A priori, on peut pas, il faut faire une requete count, et si count > 0, bah ca existe. Un peu la misère, mais ca marche…