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.




