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.

  • 🔢 Najbolje za: FOR petlja odgovara poznatom broju iteracija, a ne uvjetu otvorenog tipa.
  • 📏 Raspon: Donja i gornja granica definiraju koliko puta se petlja izvršava.
  • Implicitni brojač: Varijabla petlje se deklarira automatski i sama se povećava.
  • 🎯 Opseg: Varijabla petlje postoji samo unutar petlje.
  • 🔄 POLEĐINA: Dodavanjem naredbe REVERSE prije donje granice petlja se odbrojava unatrag.
  • 🪜 Ugniježđeno: Petlje se mogu ugniježđivati, a unutarnja petlja se u potpunosti izvršava za svaku vanjsku iteraciju.
  • 🚪 Automatski izlaz: Petlja se automatski završava kada varijabla napusti raspon.

Oracle PL/SQL petlja za for

Š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.

FOR petlja ispisuje brojeve od 1 do 5

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.

Struktura ugniježđene petlje

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.

Primjer ugniježđene FOR petlje, 1. dio

Primjer ugniježđene FOR petlje, 2. dio

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.

Pitanja i odgovori

Ne. FOR petlja implicitno deklarira svoju varijablu i ona postoji samo unutar petlje. Deklarisanje varijable istog imena izvan petlje ne utječe na onu koju koristi petlja.

REVERSE čini da petlja iterira od gornje granice prema dolje do donje granice. Granice se i dalje zapisuju od niske prema visokoj; samo je redoslijed posjećivanja vrijednosti obrnut.

Koristite FOR petlju kada je broj iteracija unaprijed poznat, kao što je fiksni raspon. Koristite WHILE petlju kada petlja treba nastaviti dok je uvjet ispunjen, a broj iteracija nije fiksan.

Da, kada osnovna petlja jednostavno broji između dvije fiksne vrijednosti. AI može zamijeniti ručni brojač i EXIT s FOR rasponom, čineći kod kraćim. Potvrdite da granice odgovaraju originalu.

Ne. Varijabla petlje je samo za čitanje unutar petlje, pa dodjeljivanje njoj izaziva grešku kompajliranja. Za promjenu tijeka upotrijebite zasebnu varijablu ili izađite iz petlje s EXIT.

Sažmite ovu objavu uz: