DROP TABLE rally; CREATE TABLE rally ( név VARCHAR2(25), nemzetiség VARCHAR2(20), feladatkör VARCHAR2(9), minősités NUMBER(3), partner VARCHAR2(25) ); INSERT INTO rally VALUES ('Gyula' ,'HUN' ,'PILOT' ,50, '---'); INSERT INTO rally VALUES ('White' ,'GBR' ,'PILOT' ,72, '---'); INSERT INTO rally VALUES ('van Glut' ,'NED' ,'PILOT' ,60, '---'); INSERT INTO rally VALUES ('Sándor' ,'HUN' ,'PILOT' ,67, '---'); INSERT INTO rally VALUES ('Piere' ,'FRA' ,'PILOT' ,57, '---'); INSERT INTO rally VALUES ('Miklós' ,'HUN' ,'PILOT' ,80, '---'); INSERT INTO rally VALUES ('Wraclaw' ,'POL' ,'NAVIGATOR',55, '---'); INSERT INTO rally VALUES ('Nitzky' ,'POL' ,'NAVIGATOR',76, '---'); INSERT INTO rally VALUES ('ONeil' ,'GBR' ,'NAVIGATOR',67, '---'); INSERT INTO rally VALUES ('Kertész' ,'HUN' ,'NAVIGATOR',55, '---'); -- 2. lépés (Partnerkeresés) SET serveroutput ON DECLARE CURSOR pilóták IS SELECT * FROM rally WHERE partner = '---' AND feladatkör = 'PILOT'; CURSOR navigátorok IS SELECT * FROM rally WHERE partner = '---' AND feladatkör = 'NAVIGATOR'; BEGIN FOR p IN pilóták LOOP FOR n IN navigátorok LOOP IF (p.nemzetiség = n.nemzetiség) AND (ABS(p.minősités - n.minősités) < 20) THEN UPDATE rally SET partner = n.név WHERE név = p.név; UPDATE rally SET partner = p.név WHERE név = n.név; EXIT; END IF; END LOOP; -- loop n END LOOP; -- loop p END; / SELECT név, partner FROM rally WHERE partner != '---';