Kuten kaikki suuret ohjelmointikielet, PL/SQL tukee silmukoita, jotka sallivat joukon käskyjä toistaa, kunnes tietty ehto täyttyy.
Tässä opetusohjelmassa tutkimme LOOP-käskyn käyttöä PL/SQL:ssä koodilohkon toistuvaan suorittamiseen.
Oracle Loops
PL/SQL-kieli tukee erilaisia silmukkarakenteita, kuten 'for'- ja 'while'-silmukat. Voimme ilmaista yleisen silmukan syntaksin Oraclessa seuraavasti:
<< etiketti >> LOOP
loop_lauseke;
END LOOP loop_label;
Tämä sisältää LOOP-avainsanan ja suoritettavan silmukan rungon, ja se on suljettu avainsanan END LOOP kanssa.
LOOP-lohko suorittaa määritetyt toiminnot ja palauttaa ohjauksen ylimmän silmukan lauseeseen valmistumisen jälkeen. Tämä on yleensä suljettu EXIT- tai EXIT WHEN -lauseeseen silmukan päättämiseksi tietyn ehdon täyttyessä. Tämä auttaa estämään loputtomat silmukat.
Oracle For Loop -syntaksi:
Seuraavassa näkyy 'for'-silmukan syntaksi PL/SQL:ssä:
ALKAAFOR silmukan_muuttuja IN [alaraja..ylempi_rajoitus] LOOP
-- silmukassa suoritettava koodi
END LOOP;
END;
Loop_variable -muuttujan avulla voit määrittää silmukan, jota käytetään ohjaamaan silmukkaa sekä ala- ja ylärajoja. Ylä- ja alarajat määrittävät alueen arvot, joissa silmukan arviointi tapahtuu.
Oracle While Loops
Voimme myös määritellä 'while'-silmukat PL/SQL:ssä seuraavan syntaksin osoittamalla tavalla:
ALKAAWHILE kunto LOOP
-- silmukkatoiminto
END LOOP;
END;
'While'-silmukassa silmukkatoiminto suoritetaan toistuvasti, kun ehto on tosi.
Oracle Cursor for Loops
Oracle tukee myös 'cursor for' -silmukoita, joiden avulla voimme suorittaa joukon ohjeita jokaiselle riville tietyssä tulosjoukossa. Syntaksi voidaan ilmaista seuraavasti:
ALKAAFOR silmukan_muuttuja IN (SELECT sarake1, sarake2, ...
FROM table1, table2, ...
WHERE ehto) LOOP
-- silmukkatoiminto
END LOOP;
END;
Esimerkkisilmukat Oraclessa
Seuraavat esimerkit kattavat Oraclen for-, while- ja for-kursorisilmukoiden kanssa työskentelyn perusteet.
Esimerkki Oracle For Loopista:
Tämä esimerkki osoittaa, kuinka 'for'-silmukkaa käytetään numeroiden tulostamiseen 1:stä 10:een.
ALKAAFOR i IN 1..10 LOOP
DBMS_OUTPUT.PUT_LINE(i);
END LOOP;
END;
Esimerkki silmukan aikana:
Voimme suorittaa samanlaisen toiminnon käyttämällä while-silmukkaa seuraavan kuvan mukaisesti:
ALKAAJULISTAA
i NUMERO := 1;
ALKAA
WHILE i <= 10 LOOP
DBMS_OUTPUT.PUT_LINE(i);
i := i + 1;
END LOOP;
END;
END;
Tämän pitäisi suorittaa samanlainen toiminto kuin 'for'-silmukka.
Kursori silmukalle Esimerkki:
Seuraavassa näytetään, kuinka 'kursori for' -silmukkaa käytetään asiakkaan koko nimen saamiseksi:
ALKAAFOR työntekijä IN (VALITSE etunimi, sukunimi
työntekijöiltä) LOOP
DBMS_OUTPUT.PUT_LINE(työntekijä.etunimi || ' ' || työntekijä.sukunimi);
END LOOP;
END;
Esimerkkituloste:
Johtopäätös
Tässä viestissä kohtasit kolme päätyyppiä silmukoita Oracle PL/SQL -kielellä. Voit tutustua asiakirjoihin tarkemmin.