insert i dwa kursory

0

Witam,
mam taki kod:

begin
 for c1 in (select do.kod from tabela2 do order by do.kod);
 for c2 in (select dp.kod from tabela1 dp order by dp.kod);
  LOOP
     insert into tabela3 (a,b,c,d)  
      values (1,c1.kod,c2.kod,'A');
  end loop;
 commit;
end;

Nie wiem jak napisać kod tak, aby pobrać pierwszą daną z c1 i dla niej przypisywać dane z c2. Tzn pobrać c1.kod_1 i dla niego
powtarzać caly insert dopoki c2 nie osiagnie konca, jezeli osiągnie koniec to wtedy ma zostac pobrany c1.kod_2 i ponownie
powtarzac insert daną z c1.kod_2 dla danych z c2 itd.
Proszę o pomoc.

0

Zadeklaruj kursor c2 nazewnątrz c1.
W pętli c1, rób:

open c2(parametr);
...
close c2;
0

begin
for c1 in (select do.kod from tabela2 do order by do.kod);
for c2 in (select dp.kod from tabela1 dp order by dp.kod);
LOOP
insert into tabela3 (a,b,c,d)
values (1,c1.kod,c2.kod,'A');
end loop;
commit;
end;



Nie wiem na ile te kursory sa Ci faktycznie potrzebne. Czy nie prosciej byloby zrobic zwykly produkt kartezjanski c1 i c2, czyli cos takiego:

insert into tabela3(a,b,c,d)
select 1,c1.kod,c2.kod,'A' from tabela2 do, tabela1 dp order by do.kod,dp.kod;

1 użytkowników online, w tym zalogowanych: 0, gości: 1