Oracle PL/SQL FOR LOOP s primjerom
⚡ Pametni sažetak
Oracle PL/SQL FOR petlja izvršava blok koda poznati broj puta između donje i gornje granice. Varijabla petlje je implicitno deklarirana i sama se povećava, tako da nije potreban ručni brojač, a ključna riječ REVERSE omogućuje petlji da broji prema dolje.
Što je FOR petlja?
Naredba "FOR LOOP" je najprikladnija kada želite izvršiti kod poznati broj puta, a ne na temelju nekog drugog uvjeta.
U ovoj petlji se određuju donja i gornja granica, i petlja se izvršava sve dok se varijabla petlje nalazi unutar tog raspona.
Varijabla petlje je samoinkrementalna, tako da nije potrebna eksplicitna operacija povećanja. Varijabla petlje ne mora biti deklarirana, jer je implicitno deklarirana.
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
Objašnjenje sintakse:
- Ključna riječ 'FOR' označava početak petlje, a 'END LOOP' kraj.
- Varijabla petlje se procjenjuje svaki put prije izvršavanja izvršnog dijela.
- Izvršni blok sadrži sav kod koji se treba pokrenuti i može sadržavati bilo koju izvršnu naredbu.
- Varijabla_petlje se implicitno deklarira tijekom izvršavanja petlje, a njen opseg je samo unutar petlje.
- Kada varijabla petlje izađe izvan raspona, upravljanje izlazi iz petlje.
- Petlja se može natjerati da radi obrnutim redoslijedom dodavanjem ključne riječi 'REVERSE' prije donje_limite.
Primjer 1: U ovom primjeru ispisujemo brojeve od 1 do 5 koristeći naredbu FOR petlje.
BEGIN dbms_output.put_line('Program started.'); FOR a IN 1 .. 5 LOOP dbms_output.put_line(a); END LOOP; dbms_output.put_line('Program completed.'); END; /
Code Objašnjenje:
- Code redak 2: Ispis izjave „Program pokrenut“.
- Code redak 3: Ključna riječ 'FOR' označava početak petlje i deklarira se varijabla petlje 'a'. Sada uzima vrijednosti od 1 do 5.
- Code redak 5: Ispisuje vrijednost 'a'.
- Code redak 6: Ključna riječ 'END LOOP' označava kraj izvršnog bloka.
- Redak 5 se nastavlja izvršavati sve dok 'a' ne dostigne vrijednost 6, u kojem trenutku uvjet ne uspijeva i kontrola izlazi iz petlje.
- Code redak 7: Ispis izjave „Program završen“.
Ugniježđene petlje
Naredbe petlji također mogu biti ugniježđene. Vanjska i unutarnja petlja mogu biti različitih tipova. U ugniježđenoj petlji, za svaku iteraciju vanjske petlje, unutarnja petlja se izvršava u potpunosti.
LOOP --outer <execution block starts> LOOP --inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
Objašnjenje sintakse:
- Vanjska petlja ima još jednu petlju unutar sebe.
- Petlje mogu biti bilo koje vrste, a funkcionalnost izvršavanja je ista.
Primjer 1: U ovom primjeru ispisujemo brojeve od 1 do 3 pomoću naredbe FOR petlje. Svaki broj se ispisuje onoliko puta koliko mu je vrijednost.
DECLARE b NUMBER; BEGIN dbms_output.put_line('Program started'); FOR a IN 1..3 LOOP b:= 1; WHILE (a>=b) LOOP dbms_output.put_line(a); b:= b+1; END LOOP; END LOOP; dbms_output.put_line('Program completed'); END; /
Code Objašnjenje:
- Code redak 2: Deklariranje varijable 'b' kao tipa podataka 'BROJ'.
- Code redak 4: Ispis izjave „Program pokrenut“.
- Code redak 5: Ključna riječ 'FOR' označava početak petlje i deklarira se varijabla petlje 'a'. Sada uzima vrijednosti od 1 do 3.
- Code redak 7: Ponovno postavljanje vrijednosti 'b' na '1' svaki put.
- Code redak 8: Unutarnji dok petlje provjerava uvjet a>=b.
- Code redak 10: Ispisuje vrijednost 'a' sve dok je gornji uvjet zadovoljen.
- Code redak 14: Ispis izjave „Program završen“.
FOR petlja i OBRNUTA FOR petlja
Prema zadanim postavkama, FOR petlja broji prema gore od donje granice do gornje granice. Dodavanjem ključne riječi REVERSE broji prema dolje, a keeping granice istim redoslijedom. Oba oblika su prikazana zajedno u nastavku kako bi razlika bila jasna.
| Oblik | Kombajn | Redoslijed vrijednosti |
|---|---|---|
| Uzlazni | ZA U 1 .. 5 | 1, 2, 3, 4, 5 |
| Silazni | ZA UNATRAG 1 .. 5 | 5, 4, 3, 2, 1 |
Imajte na umu da se čak i s REVERSE-om donja granica i dalje zapisuje prije gornje granice; mijenja se samo smjer iteracije. Za petlje čiji broj nije unaprijed poznat, osnovna petlja je bolji izbor.





