2

我有一个带有 plyyers 的表 zadanie1,每个都有 6 个随机数。

create table zadanie1(
  nazwisko varchar2(30),
  liczba1 number,
  liczba2 number,
  liczba3 number,
  liczba4 number,
  liczba5 number,
  liczba6 number,
  constraint stud2_nazw primary key (nazwisko)
  );


   Create or replace procedure "TOTOLOTEK3" is liczba number;
   cursor pierwszy_kursor is select num from (select num from (select rownum num from dual              connect by level <= 49 order by dbms_random.value) where rownum <= 6);
    begin
    for iter in 1..5
    loop
    open pierwszy_kursor;
    for iterator in 1..6
    loop
    fetch pierwszy_kursor into liczba;
    if iterator=1
    then update zadanie2 set liczba1=liczba where Id = iter;
    end if;
    if iterator=2
    then update zadanie2 set liczba2=liczba where Id = iter;
    end if;
    if iterator=3
    then update zadanie2 set liczba3=liczba where Id = iter;
    end if;
    if iterator=4
    then update zadanie2 set liczba4=liczba where Id = iter;
    end if;
    if iterator=5
    then update zadanie2 set liczba5=liczba where Id = iter;
    end if;
    if iterator=6
    then update zadanie2 set liczba6=liczba where Id = iter;
    end if;
    dbms_output.put_line( liczba||' liczba ');
    exit when pierwszy_kursor%notfound;
     end loop;
    close pierwszy_kursor;
    end loop;
    end;

我在考虑分析功能,但我不知道在这种情况下如何使用。

当我有一张行优惠券时,我需要计算每个玩家的获胜次数吗?帮助

4

1 回答 1

0

我喜欢你的随机生成器查询,很聪明!

您需要将行转换为列。这可以通过PIVOT或来完成MIN(DECODE)。一旦将它放在一行中,您就不需要游标,并且可以将该行直接插入到目标表中:

create or replace procedure totolotek3 as    
begin
  for iter in 1..5 loop
    insert into zadanie2(liczba1,liczba2,liczba3,liczba4,liczba5,liczba6)
    select min(decode(rownum,1,num)) as num1,
           min(decode(rownum,2,num)) as num2,
           min(decode(rownum,3,num)) as num3,
           min(decode(rownum,4,num)) as num4,
           min(decode(rownum,5,num)) as num5,
           min(decode(rownum,6,num)) as num6
      from (select rownum num 
              from dual connect by level <= 49 
             order by dbms_random.value) 
     where rownum <= 6; 
  end loop;
end totolotek3;
/

如果表 zadanie2 也有主键,那么您当然也需要填写该列。

于 2012-12-01T14:01:14.820 回答