Oracle PL / SQL LOOP med eksempel

Indholdsfortegnelse:

Anonim

Hvad er sløjfer?

Loops gør det muligt for en bestemt del af koden i et program at blive udført i det ønskede antal gange.

I denne vejledning vil vi se loop-konceptet i PL / SQL og flow af kontrol i sløjfer. Du vil lære-

  • Introduktion til Loops Concept
  • Erklæringer om loopkontrol
  • Typer af loop i PL / SQL
  • Grundlæggende løkkeerklæring
  • Mærkning af sløjfer

Introduktion til Loops Concept

Loops koncept giver følgende fordel ved kodning.

  • Genanvendelighed af kode
  • Reduceret kodestørrelse
  • Let flow af kontrol
  • Nedsat kompleksitet

Nedenstående diagram viser looping-konceptet på en billedlig måde

I ovenstående diagram kontrolleres sløjfebetingelsen, og så længe sløjfebetingelsen er opfyldt, vil eksekveringsblokken blive udført.

I hver iteration skal loop-tællervariablen, der faktisk bestemmer loop-tilstanden, ændre sig for at gøre kontrollen udgang fra loop. I nogle tilfælde er denne loop-tællervariabel en inkrement / decrement-operator for et foruddefineret antal, og i nogle tilfælde er det en søgetilstand, der fortsætter med at udføre blokken, indtil den opfylder den.

Erklæringer om loopkontrol

Før du lærer sløjfekonceptet, er det obligatorisk at lære om sløjfekontroludtalelser. Sløjfekontroludtalelser er dem, der faktisk styrer udførelsesstrømmen inde i sløjfen. Nedenfor er den detaljerede beskrivelse af loopkontrolerklæringerne.

BLIVE VED

Dette nøgleord sender en instruktion til PL / SQL-motoren, at når PL / SQL-motor støder på dette nøgleord inde i sløjfen, så springer den resterende kode over i eksekveringsblokken for koden, og næste iteration starter straks. Dette bruges hovedsageligt, hvis koden inde i sløjfen skal springes over for bestemte iterationsværdier.

EXIT / EXIT NÅR

Dette nøgleord sender en instruktion til PL / SQL-motoren, at når PL / SQL-motor støder på dette nøgleord, så forlader det straks den nuværende sløjfe. Hvis PL / SQL-motoren møder EXIT i en indlejret sløjfe, så kommer den ud af den sløjfe, som den er defineret i, dvs. i en indlejret sløjfe, hvilket giver EXIT i den indvendige sløjfe kun ud af styringen fra den indre sløjfe ikke fra den ydre sløjfe. 'EXIT WHEN' efterfølges af et udtryk, der giver et boolsk resultat. Hvis resultatet er SAND, afslutter kontrollen.

GÅ TIL

Denne erklæring overfører kontrollen til den mærkede erklæring ("GOTO

  • Overførsel af kontrol kan kun ske inden for underprogrammerne.
  • Overførsel af kontrol kan ikke ske fra undtagelseshåndteringsdel til udførelsesdel

Brug af denne erklæring anbefales ikke, medmindre der ikke er andre alternativer, da sporbarhed af kodestyring vil være meget vanskelig i programmet på grund af overførsel af kontrol fra en del til en anden del.

Typer af loop i PL / SQL

PL / SQL leverer følgende tre typer sløjfer

  • Grundlæggende sløjfeerklæring
  • For løkkeerklæring
  • Mens loop erklæring

Grundlæggende løkkeerklæring

Denne loop-sætning er den enkleste loop-struktur i PL / SQL. Eksekveringsblokken starter med nøgleordet 'LOOP' og slutter med nøgleordet 'END LOOP'.

Udgangsbetingelsen skal gives inde i denne eksekveringsblok, så kontrol udgang fra sløjfen.

Det har brug for EXIT-nøgleord, der skal angives eksplicit i udførelsesdelen for at forlade sløjfen.

LOOPEND LOOP;
Syntaks Forklaring:
  • I ovenstående syntaks markerer nøgleordet 'LOOP' begyndelsen på loop og 'END LOOP' markerer slutningen af ​​loop.
  • Eksekveringsblokken indeholder al den kode, der skal udføres, inklusive EXIT-tilstanden.
  • Eksekveringsdelen kan indeholde enhver eksekveringserklæring.

Bemærk: Grundlæggende loop-sætning uden EXIT-nøgleord vil være en INFINITE-LOOP, der aldrig stopper.

Eksempel 1 : I dette eksempel skal vi udskrive nummer fra 1 til 5 ved hjælp af grundlæggende loop-sætning. Til det udfører vi 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 variablen 'a' som 'NUMBER' datatype og initialiserer den med værdien '1'.
  • Kodelinje 4 : Udskrivning af udsagnet "Program startet".
  • Kodelinje 5: Nøgleord 'LOOP' markerer begyndelsen på sløjfen.
  • Kodelinje 6: Udskriver værdien af ​​'a'.
  • Kodelinje 7: Forøger værdien af ​​'a' med +1.
  • Kodelinje 8: Kontrollerer, om værdien af ​​'a' er større end 5.
  • Kodelinje 9: Nøgleord 'END LOOP' markerer afslutningen på eksekveringsblokken.
  • Koden fra linje 6 til linje 8 fortsætter med at udføre, indtil 'a' når værdien 6, da betingelsen returnerer SAND, og ​​kontrollen EXIT fra sløjfen.
  • Kodelinje 10: Udskrivning af udsagnet "Program afsluttet"

Mærkning af sløjfer

I PL / SQL kan sløjferne mærkes. Mærkaten skal vedlægges mellem "<<" og ">>". Mærkning af sløjfer især i indlejrede sløjfekoder giver mere læsbarhed. Mærkaten kan gives i EXIT-kommandoen for at afslutte den pågældende sløjfe. Ved hjælp af etiket kan kontrollen foretages til direkte at forlade den ydre sløjfe af de indlejrede sløjfer fra hvor som helst inde i sløjferne ved at give udgangskommandoen efterfulgt af den ydre sløjfeetiket.

<>LOOP  . <> LOOP --inner  END LOOP; . END LOOP;
Syntaks Forklaring:
  • I ovenstående syntaks har out-loop en mere loop inde.
  • '<>' og '<>' er etiketterne på disse sløjfer.

Eksempel 1 : I dette eksempel skal vi udskrive nummer startende fra 1 ved hjælp af Basic loop statement. Hvert nummer udskrives så mange gange som dets værdi. Den øvre grænse for serien er fastsat til programerklæringsdelen. Lad os lære, hvordan vi kan bruge etiketkonceptet til at opnå dette. Til det udfører vi 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 variablen 'a' og 'b' som 'NUMBER' datatype.
  • Kodelinje 4 : Erklærer variablen 'upper_limit' som 'NUMBER' datatype med værdien '4'
  • Kodelinje 6 : Udskrivning af udsagnet "Program startet".
  • Kodelinje 7: Den ydre løkke er blevet mærket som "ydre_løkke"
  • Kodelinje 9: Værdien af ​​'a' øges med 1.
  • Kodelinje 11: Indre sløjfe er blevet mærket som "inner_loop".
  • Kodelinje 13: EXIT-betingelse, der kontrollerer, om værdien 'a' er højere end 'upper_limit' -værdien. Hvis ikke, vil den gå længere, ellers kommer den direkte ud af den ydre løkke.
  • Kodelinje 14: Udskrivning af værdien af ​​'b'.
  • Kodelinje 15: Forøger værdien af ​​'b' med +1.
  • Kodelinje 16: EXIT-betingelse, der kontrollerer, om værdien af ​​'b' er højere end 'a'. I så fald vil den forlade kontrollen fra den indre sløjfe.
  • Kodelinje 14: Udskrivning af udsagnet "Program afsluttet"

Resumé

Sløjfe Grundlæggende løkke
UDGANGskriterier Afslut, når du møder nøgleordet 'EXIT' i udførelsesdelen
Anvendelse God at bruge, når udgangen ikke er baseret på en bestemt tilstand.