3

1 から 49 までの繰り返しなしで 6 つの数字を生成する必要があります。

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;

しかし、これはうまくいかないようです。誰かが私を助けることができますか?

4

3 に答える 3

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
于 2012-11-07T17:50:36.963 に答える
1

49個の数字を表に入れて使用するだけです

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

WHERE ROWNUM < 7
于 2012-11-07T17:39:48.277 に答える
0

わかりました、答えはthxです。このテーブルの列を追加する必要があります。そして、すべての行(ユーザー)に対して、宝くじのように6つの数字を追加します。

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

于 2012-11-07T18:22:29.757 に答える