Oracle PL/SQL PETLJA s primjerom

⚡ Pametni sažetak

PL/SQL petlje izvršavaju dio koda više puta željeni broj puta. PL/SQL nudi osnovne petlje FOR i WHILE, kontrolirane s CONTINUE, EXIT, EXIT WHEN i GOTO, a petlje se mogu označiti za čisto upravljanje ugniježđenim strukturama.

  • 🔁 Svrha: Petlja izvršava blok koda više puta, smanjujući veličinu i složenost koda.
  • 🧭 Brojač petlji: Varijabla brojača određuje uvjet petlje i mora se promijeniti kako bi petlja mogla izaći.
  • ⏭️ NASTAVITI: Preskače ostatak trenutne iteracije i započinje sljedeću.
  • 🚪 IZLAZ / IZLAZ KADA: Odmah napušta petlju, opcionalno kada je istinit Booleov uvjet.
  • 🏷️ oznake: Oznaka petlje između dvostrukih kutnih zagrada omogućuje EXIT-u da cilja vanjsku petlju.
  • ♾️ Osnovna petlja: Izvodi se dok se ne postigne eksplicitni IZLAZ; bez njega se petlja zauvijek ponavlja.
  • 🧩 Tri vrste: Osnovna petlja, FOR petlja i WHILE petlja pokrivaju uobičajene obrasce.

Oracle PL/SQL petlja

Što su petlje?

Petlje omogućuju izvršavanje određenog dijela koda u programu željeni broj puta. U ovom vodiču ćemo pogledati koncept petlji u PL/SQL-u i tijek upravljanja u petljama.

Uvod u koncept petlji

Koncept petlji pruža sljedeće prednosti u kodiranju:

  • Ponovna upotrebljivost koda.
  • Smanjena veličina koda.
  • Jednostavan protok kontrole.
  • Smanjena složenost.

Donji dijagram prikazuje WCping koncept.

WCping tok koncepata u PL/SQL-u

Na gornjem dijagramu provjerava se uvjet petlje i, sve dok je ispunjen, izvršava se blok.

U svakoj iteraciji, varijabla brojača petlje koja odlučuje da se uvjet petlje treba promijeniti kako bi upravljačka jedinica izašla iz petlje. U nekim slučajevima ovaj brojač je inkrement ili dekrement za unaprijed definirani broj, a u drugima je uvjet pretraživanja koji nastavlja izvršavati blok dok se ne zadovolji.

Izjave o kontroli petlje

Prije učenja koncepta petlji, važno je naučiti naredbe za upravljanje petljom. Ove naredbe kontroliraju tok izvršavanja unutar petlje.

NASTAVI

Ova ključna riječ upućuje PL/SQL engine da kad god naiđe na CONTINUE unutar petlje, preskoči preostali kod u bloku izvršenja i odmah pokrene sljedeću iteraciju. Ovo se uglavnom koristi kada se kod unutar petlje treba preskočiti za određene vrijednosti iteracije.

IZLAZITI / IZLAZITI KADA

Ova ključna riječ upućuje PL/SQL mehanizam da odmah izađe iz trenutne petlje. U ugniježđenoj petlji, EXIT u unutarnjoj petlji izlazi samo iz unutarnje petlje, a ne i iz vanjske petlje. Nakon 'EXIT WHEN' slijedi izraz koji daje logički rezultat; ako je rezultat TRUE, kontrola izlazi.

GOTO

Ova naredba prenosi kontrolu na označenu naredbu („GOTO ;“). Ima sljedeća ograničenja:

  • Prijenos kontrole moguće je izvršiti samo unutar potprograma.
  • Prijenos kontrole ne može se izvršiti s dijela za obradu iznimki na dio za izvršavanje.

Korištenje ove naredbe se ne preporučuje osim ako nema alternative, jer je kodna kontrola tracMogućnost postaje vrlo teška kada se kontrola prenosi s jednog dijela na drugi.

Vrste petlji u PL/SQL

PL / SQL nudi sljedeće tri vrste petlji:

Donja tablica uspoređuje ta tri prije nego što se detaljno obradi osnovna petlja.

Petlja Izlazni kriteriji Najbolje koristiti kada
Osnovna petlja Eksplicitni IZLAZ u bloku Izlaz nije zasnovan na fiksnom broju ili uvjetu
FOR petlja Brojač doseže kraj svog raspona Broj iteracija je unaprijed poznat
WHILE petlja Uvjet postaje lažan Petlja bi se trebala izvršavati dok je ispunjen uvjet

Osnovna naredba petlje

Ovo je najjednostavnija struktura petlje u PL/SQL-u. Izvršni blok počinje ključnom riječi 'LOOP' i završava s 'END LOOP'. Izlazni uvjet treba biti naveden unutar izvršnog bloka kako bi kontrola izašla iz petlje, a ključna riječ EXIT mora biti eksplicitno navedena.

Osnovna struktura petlje u PL/SQL-u

LOOP
<execution block starts>
<EXIT condition based on developer criteria>
<execution_block_ends>
END LOOP;

Objašnjenje sintakse:

  • Ključna riječ 'LOOP' označava početak petlje, a 'END LOOP' kraj.
  • Izvršni blok sadrži sav kod koji se mora pokrenuti, uključujući i uvjet IZLAZA.
  • Izvršni dio može sadržavati bilo koju izvršnu naredbu.

Bilješka: Osnovna naredba petlje bez ključne riječi EXIT je beskonačna petlja koja se nikada ne zaustavlja.

Primjer 1: U ovom primjeru ispisujemo brojeve od 1 do 5 koristeći osnovnu naredbu petlje.

Osnovni brojevi za kružni ispis od 1 do 5

DECLARE
a NUMBER:= 1;
BEGIN
dbms_output.put_line('Program started.');
LOOP
dbms_output.put_line(a);
a:= a+1;
EXIT WHEN a>5;
END LOOP;
dbms_output.put_line('Program completed');
END;
/

Code Objašnjenje:

  • Code redak 2: Deklarisanje varijable 'a' kao 'BROJ' i inicijalizacija s vrijednošću '1'.
  • Code redak 4: Ispis izjave „Program pokrenut“.
  • Code redak 5: Ključna riječ 'LOOP' označava početak petlje.
  • Code redak 6: Ispisuje vrijednost 'a'.
  • Code redak 7: Povećava vrijednost 'a' za 1.
  • Code redak 8: Provjerava je li vrijednost 'a' veća od 5.
  • Code redak 9: Ključna riječ 'END LOOP' označava kraj izvršnog bloka.
  • Redci 6 do 8 nastavljaju se izvršavati sve dok 'a' ne dosegne 6, u kojem trenutku uvjet vraća TRUE i kontrola izlazi iz petlje.
  • Code redak 10: Ispis izjave „Program završen“.

Označavanje petlji

U PL/SQL-u, petlje se mogu označavati. Oznaka treba biti zatvorena između "<<" i ">>". Označavanje petlji, posebno u ugniježđenim petljama, daje veću čitljivost. Oznaka se može dati u naredbi EXIT za izlaz iz te određene petlje, tako da kontrola može izravno izaći iz vanjske petlje ugniježđene strukture davanjem naredbe EXIT nakon koje slijedi oznaka vanjske petlje.

Struktura označene ugniježđene petlje

<<OUTER_LOOP>>
LOOP
<execution_block_starts>
.
<<INNER_LOOP>>
LOOP --inner
<execution_part>
END LOOP;
.
<execution_block_ends>
END LOOP;

Objašnjenje sintakse:

  • Vanjska petlja ima još jednu petlju unutar sebe.
  • '< >' i '<' >' su oznake tih petlji.

Primjer 1: U ovom primjeru ispisujemo brojeve počevši od 1 koristeći osnovnu naredbu petlje. Svaki broj se ispisuje onoliko puta koliko mu je vrijednost. Gornja granica niza je fiksna u deklaracijskom dijelu. Za to koristimo koncept oznake.

Primjer označene petlje, 1. dioPrimjer označene petlje, 2. dio

DECLARE
a NUMBER:= 0;
b NUMBER;
upper_limit NUMBER := 4;
BEGIN
dbms_output.put_line('Program started.');
<<outer_loop>>
LOOP
a:= a+1;
b:= 1;
<<inner_loop>>
LOOP
EXIT outer_loop WHEN a > upper_limit;
dbms_output.put_line(a);
b:= b+1;
EXIT inner_loop WHEN b>a;
END LOOP;
END LOOP;
dbms_output.put_line('Program completed.');
END;
/

Code Objašnjenje:

  • Code redak 2-3: Deklariranje varijabli 'a' i 'b' kao tipa podataka 'BROJ'.
  • Code redak 4: Deklariranje varijable 'gornja_granica' kao 'BROJ' s vrijednošću '4'.
  • Code redak 6: Ispis izjave „Program pokrenut“.
  • Code redak 7: Vanjska petlja je označena kao „outer_loop“.
  • Code redak 9: Vrijednost 'a' se povećava za 1.
  • Code redak 11: Unutarnja petlja je označena kao "inner_loop".
  • Code redak 13: IZLAZNI uvjet koji provjerava je li 'a' veći od vrijednosti 'upper_limit'. Ako nije, ide dalje; inače se izravno izlazi iz vanjske petlje.
  • Code redak 14: Ispis vrijednosti 'b'.
  • Code redak 15: Povećava vrijednost 'b' za 1.
  • Code redak 16: IZLAZNI uvjet koji provjerava je li 'b' veći od 'a'. Ako jest, izlazi se iz unutarnje petlje.
  • Code redak 19: Ispis izjave „Program završen“.

Pitanja i odgovori

EXIT bezuvjetno napušta petlju. EXIT WHEN je napušta samo kada je sljedeći logički izraz istinit, što uklanja potrebu za zasebnim IF oko običnog EXIT-a.

Oznaka omogućuje IZLAZU u unutarnjoj petlji da napusti imenovanu vanjsku petlju u jednom koraku. Također čini ugniježđeni kod puno lakšim za čitanje nego trackralj obične naredbe END LOOP.

Ako blok nema IZLAZ ili brojač nikada ne dosegne uvjet izlaza, petlja se nikada ne zaustavlja. Uvijek provjerite da se brojač mijenja prema uvjetu EXIT WHEN.

Često, da. Umjetna inteligencija može trace pomiče li se brojač prema IZLAZNOM uvjetu i upozorava kada petlja nema dostupan izlaz, iako izlaz ovisan o podacima i dalje zahtijeva probno pokretanje za potvrdu.

CONTINUE preskače ostatak trenutne iteracije i skače na sljedeću. Korisno je kada određene vrijednosti treba zanemariti bez potpunog napuštanja petlje.

Sažmite ovu objavu uz: