2012-11-07 1 views
3

Je dois générer 6 numéros sans répétition de 1 à 49. J'ai quelque chose comme ça:Générer 6 numéros sans répétition de l'ensemble 1 ... 49

create table zadanie1(
NAZWISKO varchar2(30), 
PUNKTY number, 
ID number, 
constraint stud1_nazw primary key(NAZWISKO) 
); 



create or replace procedure "LOTTO" IS 
pkt number; 
begin 
    loop 
     BEGIN 
     pkt := round(dbms_random.value(1,14),0); 
     INSERT INTO ZADANIE1(PUNKTY) VALUES (pkt); 
     exit; 
     Exception When DUP_VAL_ON_INDEX Then 0; 
     END; 
end loop; 
END; 

mais cela ne semble pas travail. Quelqu'un peut-il m'aider?

Répondre

1

Il suffit de mettre les 49 chiffres dans un tableau et d'utiliser

SELECT SOME_NUMBER FROM 
(
    SELECT SOME_NUMBER 
    FROM TABLE_OF_NUMBERS 
    ORDER BY DBMS_RANDOM.VALUE() 
) 

WHERE ROWNUM < 7 
5
SQL> select num 
    2 from (select rownum num 
    3  from dual 
    4  connect by level <= 49 
    5  order by dbms_random.value) 
    6 where rownum <= 6; 

     NUM 
---------- 
     10 
     6 
     9 
     12 
     22 
     14 
+0

thx pour la réponse rapide et claire – user1806742

+0

+1 bien fait. – Jesse

0

ok, thx pour la réponse. Je dois ajouter une colonne pour cette table. et pour chaque rangée (utilisateur) ajoutez le numéro 6 comme dans la loterie.

create table zadanie1( user varchar2(30), PUNKTY number, ID number, constraint stud1_nazw primary key(NAZWISKO) );

Questions connexes