我有表zadanie1与plyyers和每个6个randoms编号。
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;
我在考虑分析功能,但在这种情况下我不知道如何使用。
当我有一排优惠券时,我需要为每位玩家计算获胜次数吗? 帮助
答案 0 :(得分: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也有主键,你当然也需要填写该列。