Oracle PL / SQL LOOP med eksempel

Innholdsfortegnelse:

Anonim

Hva er Loops?

Loops tillater at en bestemt del av koden i et program blir henrettet for ønsket antall ganger.

I denne opplæringen skal vi se sløyfekonseptet i PL / SQL og kontrollflyt i sløyfer. Du vil lære-

  • Introduksjon til Loops Concept
  • Uttalelser om sløyfekontroll
  • Typer Loop i PL / SQL
  • Grunnleggende løkkeerklæring
  • Merking av løkker

Introduksjon til Loops Concept

Loops-konseptet gir følgende fordeler ved koding.

  • Gjenbrukbarhet av kode
  • Redusert kodestørrelse
  • Enkel flyt av kontroll
  • Redusert kompleksitet

Diagrammet nedenfor viser sløyfekonseptet på en billedlig måte

I diagrammet ovenfor vil sløyfetilstanden bli sjekket, og så lenge sløyfetilstanden er tilfredsstilt, vil kjøringsblokken bli utført.

I hver iterasjon skal sløyfetellervariabelen som faktisk bestemmer sløyfetilstanden modifiseres for å gjøre kontrollen utgang fra sløyfen. I noen tilfeller er denne sløyfetellervariabelen inkrement / decrement-operator for en forhåndsdefinert telling, og i noen tilfeller er det en søketilstand som fortsetter å utføre blokken til den tilfredsstiller den.

Uttalelser om sløyfekontroll

Før du lærer sløyfekonseptet, er det obligatorisk å lære om sløyfekontrolluttalelser. Sløyfekontrolluttalelser er de som faktisk styrer gjennomføringsflyten inne i sløyfen. Nedenfor er den detaljerte beskrivelsen om loopkontrolluttalelsene.

FORTSETTE

Dette nøkkelordet sender en instruksjon til PL / SQL-motoren at når PL / SQL-motoren møter dette nøkkelordet inne i sløyfen, vil det hoppe over den gjenværende koden i utførelsesblokken til koden, og neste iterasjon starter umiddelbart. Dette vil hovedsakelig brukes hvis koden i sløyfen vil bli hoppet over for visse iterasjonsverdier.

AVSLUTT / AVSLUT NÅR

Dette nøkkelordet sender en instruksjon til PL / SQL-motoren at når PL / SQL-motoren møter dette nøkkelordet, vil det umiddelbart gå ut av gjeldende sløyfe. Hvis PL / SQL-motoren møter EXIT i en nestet sløyfe, vil den komme ut av sløyfen den er definert i, dvs. i en nestet sløyfe, og gir EXIT i den indre sløyfen bare ut av kontrollen fra indre sløyfe ikke fra den ytre sløyfen. 'EXIT WHEN' etterfølges av et uttrykk som gir et boolsk resultat. Hvis resultatet er SANT, SLUTTER kontrollen.

GÅ TIL

Denne uttalelsen overfører kontrollen til den merkede setningen ("GOTO

  • Overføring av kontroll kan bare gjøres innenfor underprogrammene.
  • Overføring av kontroll kan ikke gjøres fra unntakshåndteringsdel til utførelsesdel

Bruk av denne påstanden anbefales ikke med mindre det ikke er andre alternativer, da sporbarhet av kodekontroll vil være veldig vanskelig i programmet på grunn av overføring av kontroll fra en del til en annen del.

Typer Loop i PL / SQL

PL / SQL gir følgende tre typer sløyfer

  • Grunnleggende sløyfeuttalelse
  • For løkkeerklæring
  • Mens løkke uttalelse

Grunnleggende løkkeerklæring

Denne loop-setningen er den enkleste loop-strukturen i PL / SQL. Utførelsesblokken starter med nøkkelordet 'LOOP' og slutter med nøkkelordet 'END LOOP'.

Utgangsbetingelsen bør gis inne i denne utførelsesblokken slik at kontrollen går ut av sløyfen.

Det må EXIT-nøkkelordet gis eksplisitt i utførelsesdelen for å gå ut av sløyfen.

LOOPEND LOOP;
Syntaks Forklaring:
  • I syntaksen ovenfor markerer nøkkelordet 'LOOP' begynnelsen på loop og 'END LOOP' markerer slutten på loop.
  • Utførelsesblokken inneholder all koden som må utføres, inkludert EXIT-tilstanden.
  • Utførelsesdelen kan inneholde hvilken som helst utførelseserklæring.

Merk: Grunnleggende sløyfeuttrykk uten EXIT-nøkkelord vil være en INFINITE-LOOP som aldri vil stoppe.

Eksempel 1 : I dette eksemplet skal vi skrive ut nummer fra 1 til 5 ved hjelp av grunnleggende sløyfesetning. For det vil vi utføre følgende kode.

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

Kode Forklaring:

  • Kodelinje 2 : Erklærer variabelen 'a' som 'NUMBER' datatype og initialiserer den med verdien '1'.
  • Kodelinje 4 : Utskrift av utsagnet "Programmet startet".
  • Kodelinje 5: Søkeord 'LOOP' markerer begynnelsen på loop.
  • Kodelinje 6: Skriver ut verdien av 'a'.
  • Kodelinje 7: Øker verdien av 'a' med +1.
  • Kodelinje 8: Sjekker om verdien av 'a' er større enn 5.
  • Kodelinje 9: Nøkkelord 'END LOOP' markerer slutten på utførelsesblokken.
  • Koden fra linje 6 til linje 8 vil fortsette å kjøre til 'a' når verdien 6, ettersom tilstanden vil returnere SANT, og kontrollen GÅR ut av sløyfen.
  • Kodelinje 10: Utskrift av utsagnet "Program fullført"

Merking av løkker

I PL / SQL kan sløyfene merkes. Etiketten skal være vedlagt mellom "<<" og ">>". Merking av sløyfer, spesielt i nestede sløyfekoder, vil gi mer lesbarhet. Etiketten kan gis i EXIT-kommandoen for å gå ut av den aktuelle sløyfen. Ved hjelp av etikett kan kontrollen lages for å gå ut av den ytre sløyfen til de nestede sløyfene direkte fra hvor som helst inne i sløyfene, ved å gi utgangskommandoen etterfulgt av ytre sløyfeetikett.

<>LOOP  . <> LOOP --inner  END LOOP; . END LOOP;
Syntaks Forklaring:
  • I ovennevnte syntaks har utsløyfen en sløyfe i seg.
  • '<>' og '<>' er etikettene til disse sløyfene.

Eksempel 1 : I dette eksemplet skal vi skrive ut nummer fra 1 ved å bruke Basic loop statement. Hvert tall blir skrevet ut så mange ganger som verdien. Den øvre grensen for serien er festet til programerklæringsdelen. La oss lære hvordan vi kan bruke merkekonseptet for å oppnå dette. For det vil vi utføre følgende kode

DECLAREa NUMBER:=0;b NUMBER;upper-limit NUMBER :=4;BEGINdbms_output.put_line(‘Program started.' );«outerloop»‭ ‬LOOPa:=a+1;b:=l;«inner loop»LOOPEXIT 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;/

Kode Forklaring:

  • Kodelinje 2-3 : Erklærer variabelen 'a' og 'b' som 'NUMBER' datatype.
  • Kodelinje 4 : Erklærer variabelen 'upper_limit' som 'NUMBER' datatype med verdien '4'
  • Kodelinje 6 : Utskrift av utsagnet "Programmet startet".
  • Kodelinje 7: Den ytre sløyfen er merket som "outer_loop"
  • Kodelinje 9: Verdien til 'a' økes med 1.
  • Kodelinje 11: Indre sløyfe er merket som "inner_loop".
  • Kodelinje 13: EXIT-tilstand som sjekker om verdien 'a' er høyere enn 'upper_limit' -verdien. Hvis ikke, vil den gå lenger, ellers går den direkte ut av den ytre sløyfen.
  • Kodelinje 14: Utskrift av verdien til 'b'.
  • Kodelinje 15: Øker verdien av 'b' med +1.
  • Kodelinje 16: EXIT-betingelse som sjekker om verdien av 'b' er høyere enn 'a'. I så fall vil den gå ut av kontrollen fra den indre sløyfen.
  • Kodelinje 14: Utskrift av utsagnet "Program fullført"

Sammendrag

Løkke Grunnleggende løkke
UTGANGskriterier Gå ut når du møter nøkkelordet 'EXIT' i utførelsesdelen
Bruk Bra å bruke når utgang ikke er basert på noen spesiell tilstand.