Oracle PL / SQL LOOP med exempel

Innehållsförteckning:

Anonim

Vad är loopar?

Loops tillåter att en viss del av koden i ett program körs för önskat antal gånger.

I denna handledning ska vi se loopkonceptet i PL / SQL och kontrollflödet i loopar. Du kommer att lära dig-

  • Introduktion till Loops Concept
  • Uttryck för slingkontroll
  • Typer av loop i PL / SQL
  • Grundläggande Loop Statement
  • Märkning av öglor

Introduktion till Loops Concept

Loops-konceptet ger följande fördelar vid kodning.

  • Återanvändbarhet av kod
  • Minskad kodstorlek
  • Enkelt flöde av kontroll
  • Minskad komplexitet

Nedanstående diagram visar looping-konceptet på ett bildligt sätt

I ovanstående diagram kommer slingan att kontrolleras, och så länge som slingan är uppfyllt kommer körningsblocket att köras.

I varje iteration ska slingräknarvariabeln som faktiskt bestämmer slingans villkor modifieras för att göra kontrollen utgående från slingan. I vissa fall är denna slingräknarvariabel steg för steg / minskning för en fördefinierad räkning, och i vissa fall är det ett sökvillkor som fortsätter att köra blocket tills det uppfyller det.

Uttryck för slingkontroll

Innan du lär dig loopar-konceptet är det obligatoriskt att lära sig om loopkontrolluttalanden. Loop control uttalanden är de som faktiskt styr flödet av exekvering inuti loop. Nedan finns en detaljerad beskrivning av loopkontrolluttalanden.

FORTSÄTTA

Det här nyckelordet skickar en instruktion till PL / SQL-motorn att när PL / SQL-motorn stöter på det här nyckelordet inuti slingan, kommer det att hoppa över återstående kod i exekveringsblocket för koden, och nästa iteration börjar omedelbart. Detta kommer huvudsakligen att användas om koden inuti slingan vill hoppas över för vissa iterationsvärden.

AVSLUTA / AVSLUTA NÄR

Det här nyckelordet skickar en instruktion till PL / SQL-motorn att när PL / SQL-motorn stöter på detta nyckelord, kommer det omedelbart att lämnas från den aktuella slingan. Om PL / SQL-motorn möter EXIT i en kapslad slinga kommer den att komma ut ur slingan där den har definierats, dvs i en kapslad slinga, vilket ger EXIT i den inre slingan kommer endast att lämna kontrollen från den inre slingan men inte från den yttre slingan. 'EXIT WHEN' följs av ett uttryck som ger ett booleskt resultat. Om resultatet är SANT avslutas kontrollen.

GÅ TILL

Detta uttalande överför kontrollen till det märkta uttalandet ("GOTO

  • Överföring av kontroll kan endast göras inom underprogrammen.
  • Överföring av kontroll kan inte göras från undantagshanteringsdel till exekveringsdel

Användning av detta uttalande rekommenderas inte såvida det inte finns några andra alternativ, eftersom spårbarheten för kodkontroll kommer att vara mycket svår i programmet på grund av överföringen av kontroll från en del till en annan del.

Typer av loop i PL / SQL

PL / SQL tillhandahåller följande tre typer av slingor

  • Grundläggande loop-uttalande
  • För loop-uttalande
  • While loop-uttalande

Grundläggande Loop Statement

Detta loop-uttalande är den enklaste loopstrukturen i PL / SQL. Körningsblocket börjar med nyckelordet 'LOOP' och slutar med nyckelordet 'END LOOP'.

Utgångsvillkoret bör anges i detta körblock så att kontrollen går ut ur slingan.

EXIT-nyckelordet måste anges uttryckligen i exekveringsdelen för att gå ut ur slingan.

LOOPEND LOOP;
Syntaxförklaring:
  • I ovanstående syntax markerar nyckelordet 'LOOP' början på slingan och 'END LOOP' markerar slutet på slingan.
  • Körningsblocket innehåller all kod som behöver köras inklusive EXIT-villkoret.
  • Exekveringsdelen kan innehålla vilket exekveringsuttalande som helst.

Obs: Grundläggande loop-uttalande utan EXIT-nyckelord kommer att vara en INFINITE-LOOP som aldrig kommer att sluta.

Exempel 1 : I det här exemplet ska vi skriva ut nummer från 1 till 5 med grundläggande loop-uttalande. För det kommer vi att köra följande kod.

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

Kodförklaring:

  • Kodrad 2 : Förklarar variabeln "a" som "NUMBER" datatyp och initialiserar den med värdet "1".
  • Kodrad 4 : Skriva ut påståendet "Programmet startade".
  • Kodrad 5: Nyckelordet 'LOOP' markerar början på slingan.
  • Kodrad 6: Skriver ut värdet på 'a'.
  • Kodrad 7: Ökar värdet på 'a' med +1.
  • Kodrad 8: Kontrollerar om värdet på 'a' är större än 5.
  • Kodrad 9: Nyckelordet "END LOOP" markerar slutet på exekveringsblocket.
  • Koden från rad 6 till rad 8 fortsätter att köra tills 'a' når värdet 6, eftersom villkoret kommer att återgå till SANT och kontrollen AVSLUTAR från slingan.
  • Kodrad 10: Skriva ut påståendet "Programmet slutfört"

Märkning av öglor

I PL / SQL kan slingorna märkas. Etiketten ska bifogas mellan "<<" och ">>". Märkning av slingor, särskilt i kapslade slingkoder, ger mer läsbarhet. Etiketten kan ges i EXIT-kommandot för att lämna den specifika slingan. Med hjälp av etikett kan kontrollen göras för att direkt lämna de kapslade öglornas yttre slinga från var som helst inne i slingorna, genom att ge utgångskommandot följt av yttre slingaetikett.

<>LOOP  . <> LOOP --inner  END LOOP; . END LOOP;
Syntaxförklaring:
  • I ovanstående syntax har utslingan ytterligare en slinga inuti.
  • '<>' och '<>' är etiketterna för dessa slingor.

Exempel 1 : I det här exemplet ska vi skriva ut nummer med början från 1 med Basic loop-uttalande. Varje nummer kommer att skrivas ut så många gånger som dess värde. Den övre gränsen för serien är fastställd på programdeklarationsdelen. Låt oss lära oss hur vi kan använda etikettkonceptet för att uppnå detta. För det kommer vi att köra följande kod

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

Kodförklaring:

  • Kodrad 2-3 : Förklarar variabeln 'a' och 'b' som 'NUMMER' datatyp.
  • Kodrad 4 : Förklarar variabeln "upper_limit" som "NUMBER" datatyp med värdet "4"
  • Kodrad 6 : Skriva ut påståendet "Program startat".
  • Kodrad 7: Den yttre slingan har märkts som "yttre_loop"
  • Kodrad 9: Värdet för 'a' ökas med 1.
  • Kodrad 11: Inre slinga har märkts som "inner_loop".
  • Kodrad 13: EXIT-villkor som kontrollerar om värdet 'a' är högre än 'upper_limit' -värdet. Om inte, kommer det att gå längre, annars går det direkt ut från yttre slinga.
  • Kodrad 14: Skriva ut värdet på 'b'.
  • Kodrad 15: Ökar värdet 'b' med +1.
  • Kodrad 16: EXIT-villkor som kontrollerar om värdet på 'b' är högre än 'a'. Om så är fallet kommer det att lämna kontrollen från den inre slingan.
  • Kodrad 14: Skriva ut påståendet "Programmet slutfört"

Sammanfattning

Slinga Grundläggande slinga
EXIT-kriterier Avsluta när du stöter på nyckelordet 'EXIT' i exekveringsdelen
Användande Bra att använda när utgången inte baseras på något särskilt tillstånd.