Oracle PL/SQL PETLJA s primjerom

Što su petlje?

Petlje omogućuju da se određeni dio koda u programu izvrši željeni broj puta.

U ovom vodiču ćemo vidjeti koncept petlje u PL/SQL i tijek kontrole u petljama.

Uvod u koncept petlji

Koncept petlji pruža sljedeću prednost u kodiranju.

  • Ponovno korištenje koda
  • Smanjena veličina koda
  • Jednostavan protok kontrole
  • Smanjena složenost

Donji dijagram na slikovit način prikazuje koncept petlje

Oracle PL/SQL PETLJA

U gornjem dijagramu, uvjet petlje će biti provjeren, i sve dok je uvjet petlje zadovoljen, izvršni blok će se izvršiti.

U svakoj iteraciji, varijabla brojača petlje koja zapravo odlučuje o uvjetu petlje treba se modificirati kako bi kontrola izašla iz petlje. U nekim slučajevima, ova varijabla brojača petlje je operator povećanja/smanjenja za unaprijed definirani broj, au nekim slučajevima to je uvjet pretraživanja koji nastavlja izvršavati blok dok ga ne zadovolji.

Izjave o kontroli petlje

Prije učenja koncepta petlje, obavezno je naučiti naredbe za kontrolu petlje. Izjave kontrole petlje su one koje zapravo kontroliraju tijek izvršenja unutar petlje. Ispod je detaljan opis izjava o kontroli petlje.

NASTAVI

Ova ključna riječ šalje instrukciju PL/SQL stroju da kad god PL/SQL stroj naiđe na tu ključnu riječ unutar petlje, preskočit će preostali kod u izvršnom bloku koda, a sljedeća će iteracija započeti odmah. Ovo će se uglavnom koristiti ako kod unutar petlje želi biti preskočen za određene vrijednosti ponavljanja.

IZLAZITI / IZLAZITI KADA

Ova ključna riječ šalje instrukciju PL/SQL mašini da će, kad god PL/SQL mašina naiđe na ovu ključnu riječ, odmah izaći iz trenutne petlje. Ako PL/SQL mehanizam naiđe na EXIT u ugniježđenoj petlji, tada će izaći iz petlje u kojoj je definiran, tj. u ugniježđenim petljama, davanjem EXIT-a u unutarnjoj petlji izaći će samo kontrola iz unutarnje petlje, ali ne iz vanjske petlje. Iza 'EXIT WHEN' slijedi izraz koji daje Booleov rezultat. Ako je rezultat TRUE, tada će kontrola izaći.

GOTO

Ova izjava će prenijeti kontrolu na označenu izjavu (“GOTO ;”). Ovo 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 rukovanje iznimkama na dio za izvođenje

Korištenje ove izjave se ne preporučuje osim ako ne postoje druge alternative, jer će sljedivost kontrole koda biti vrlo teška u programu zbog prijenosa kontrole s jednog dijela na drugi dio.

Vrste petlji u PL/SQL

PL / SQL nudi sljedeće tri vrste petlji

Osnovna naredba petlje

Ova izjava petlje je najjednostavnija struktura petlje u PL/SQL. Izvršni blok počinje ključnom riječi 'LOOP' i završava ključnom riječi 'END LOOP'.

Izlazni uvjet treba dati unutar ovog izvršnog bloka tako da kontrolira izlaz iz petlje.

Za izlazak iz petlje potrebna je eksplicitna ključna riječ EXIT u dijelu za izvođenje.

Osnovna naredba petlje

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

Objašnjenje sintakse:

  • U gornjoj sintaksi ključna riječ 'LOOP' označava početak petlje, a 'END LOOP' označava kraj petlje.
  • Izvršni blok sadrži sav kod koji se treba izvršiti uključujući uvjet EXIT.
  • Izvršni dio može sadržavati bilo koju naredbu o izvršenju.

Bilješka: Osnovna naredba petlje bez ključne riječi EXIT bit će BESKONAČNA PETLJA koja se nikada neće zaustaviti.

Primjer 1: U ovom primjeru ispisat ćemo brojeve od 1 do 5 koristeći osnovnu naredbu petlje. Za to ćemo izvršiti sljedeći kod.

Osnovna naredba petlje

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:
/

Objašnjenje koda:

  • Kodna linija 2: Deklaracija varijable 'a' kao tipa podataka 'BROJ' i njeno inicijaliziranje s vrijednošću '1'.
  • Kodna linija 4: Ispis izjave “Program je pokrenut”.
  • Redak koda 5: Ključna riječ 'LOOP' označava početak petlje.
  • Redak koda 6: Ispisuje vrijednost 'a'.
  • Redak koda 7: Povećava vrijednost 'a' za +1.
  • Redak koda 8: Provjerava je li vrijednost 'a' veća od 5.
  • Redak koda 9: Ključna riječ 'END LOOP' označava kraj izvedbenog bloka.
  • Kôd od retka 6 do retka 8 nastavit će se izvršavati sve dok 'a' ne dosegne vrijednost 6, jer će uvjet vratiti TRUE, a kontrola će IZLAZITI iz petlje.
  • Redak koda 10: Ispis izjave "Program završen"

Označavanje petlji

U PL/SQL, petlje se mogu označiti. Oznaka treba biti između “<<” i “>>”. Označavanje petlji, posebno u kodovima ugniježđenih petlji, omogućit će veću čitljivost. Oznaka se može dati u naredbi EXIT za izlaz iz te određene petlje. Korištenjem oznake, kontrola se može izvesti tako da izravno izađe iz vanjske petlje ugniježđenih petlji s bilo kojeg mjesta unutar petlji, davanjem naredbe za izlaz nakon koje slijedi oznaka vanjske petlje.

Označavanje petlji

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

Objašnjenje sintakse:

  • U gornjoj sintaksi, izlazna petlja ima još jednu petlju unutar sebe.
  • '< >' i '< >' su oznake ovih petlji.

Primjer 1: U ovom primjeru ispisat ćemo broj počevši od 1 koristeći osnovnu naredbu petlje. Svaki će se broj ispisati onoliko puta koliko iznosi njegova vrijednost. Gornja granica niza je fiksirana u dijelu deklaracije programa. Naučimo kako možemo koristiti koncept oznake da to postignemo. Za to ćemo izvršiti sljedeći kod

Označavanje petljiOznačavanje petlji

DECLARE
a NUMBER:=0;
b NUMBER;
upper-limit NUMBER :=4;
BEGIN
dbms_output.put_line(‘Program started.' ); 
«outerloop»‭	‬
LOOP 
a:=a+1;
b:=l;
«inner loop»
LOOP
EXIT outer_loop WHEN a > upper_limit;
dbms_output.put_line(a);
b:=b+l;
EXIT inner_loop WHEN b>a;
END LOOP;
END LOOP;
dbms_output.put_line('Program completed.');
END;
/

Objašnjenje koda:

  • Redak koda 2-3: Deklaracija varijabli 'a' i 'b' kao tipa podataka 'BROJ'.
  • Kodna linija 4: Deklaracija varijable 'upper_limit' kao tipa podataka 'NUMBER' s vrijednošću '4'
  • Kodna linija 6: Ispis izjave “Program je pokrenut”.
  • Redak koda 7: Vanjska petlja je označena kao "outer_loop"
  • Redak koda 9: Vrijednost 'a' se povećava za 1.
  • Redak koda 11: Unutarnja petlja je označena kao "unutarnja petlja".
  • Redak koda 13: EXIT uvjet koji provjerava je li vrijednost 'a' viša od vrijednosti 'upper_limit'. Ako ne, onda će ići dalje, inače izlazi izravno iz vanjske petlje.
  • Redak koda 14: Ispis vrijednosti 'b'.
  • Redak koda 15: Povećava vrijednost 'b' za +1.
  • Redak koda 16: EXIT uvjet koji provjerava je li vrijednost 'b' veća od 'a'. Ako je tako, tada će izaći iz kontrole unutarnje petlje.
  • Redak koda 14: Ispis izjave "Program završen"

rezime

Petlja Osnovna petlja
Kriteriji za IZLAZ Izađite kada naiđete na ključnu riječ 'EXIT' u izvršnom dijelu
Upotreba Dobro je koristiti kada se izlaz ne temelji na određenom stanju.