Oracle PL/SQL FÖR LOOP med exempel
Vad är For Loop?
"FOR LOOP"-satsen är bäst lämpad när du vill exekvera en kod ett känt antal gånger snarare än baserat på några andra villkor.
I den här slingan kommer den nedre gränsen och den högre gränsen att specificeras och så länge som slingvariabeln ligger mellan detta intervall kommer slingan att exekveras.
Loopvariabeln är självinkrementell, så ingen explicit inkrementeringsoperation behövs i denna loop. Slingvariabeln behöver inte deklareras, eftersom den deklareras implicit.
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
Syntaxförklaring:
- I ovanstående syntax markerar nyckelordet 'FOR' början av slingan och 'END LOOP' markerar slutet på slingan.
- Slingvariabel utvärderas varje gång innan exekveringsdelen exekveras.
- Exekveringsblocket innehåller all kod som behöver exekveras. Exekveringsdelen kan innehålla valfri exekveringssats.
- loop_variablen deklareras implicit under exekveringen av hela loopen, och omfattningen av denna loop_variable kommer endast att vara inuti denna loop.
- Om slingvariabeln kom utanför intervallet, kommer kontrollen att lämna slingan.
- Slingan kan fås att fungera i omvänd ordning genom att lägga till nyckelordet 'REVERSE' före lower_limit.
Exempelvis 1: I det här exemplet kommer vi att skriva ut nummer från 1 till 5 med FOR loop-satsen. För det kommer vi att köra följande kod.
BEGIN dbms Qutput.put linef.Prp.gram started.' ); FOR a IN 1 .. 5 LOOP dbms_output.put_line(a); END LOOP: dbms_output.put_iine('Program completed.'); END; /
Kodförklaring:
- Kodrad 2: Skriver ut meddelandet "Program started".
- Kodrad 3: Nyckelordet 'FOR' markerar början av loopen och loop_variabeln 'a' deklareras. Det kommer nu att ha värdet från 1 till 5
- Kodrad 5: Skriver ut värdet på 'a'.
- Kodrad 6: Nyckelordet 'END LOOP' markerar slutet på exekveringsblocket.
- Koden från rad 5 kommer att fortsätta att exekvera tills 'a' når värdet 6, eftersom villkoret kommer att misslyckas och kontrollen EXITAR från slingan.
- Kodrad 7: Skriver ut meddelandet "Program avslutat"
Kapslade loopar
Loopsatserna kan också kapslas. Den yttre och inre öglan kan vara av olika typer. I den kapslade slingan, för varje iterationsvärde i den yttre slingan, kommer den inre slingan att exekveras fullt ut.
LOOP -outer <execution block starts> LOOP — inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
Syntaxförklaring:
- I ovanstående syntax har den yttre slingan ytterligare en slinga inuti.
- Slingorna kan vara av alla typer och exekveringsfunktionalitetsdelen är densamma.
Exempelvis 1: I det här exemplet kommer vi att skriva ut nummer från 1 till 3 med FOR loop-satsen. Varje nummer kommer att skrivas ut lika många gånger som dess värde. För det kommer vi att köra följande kod.
DECLARE b NUMBER; BEGIN dbms output put line(‘Program started' ); FOR a IN 1..3 LOOP b:=1; WHILE (a>=b) LOOP dbms output put line(a); b:=b+1; END LOOP; END LOOP; dbms_output.put_line('Program completed' ); END; /
Kodförklaring:
- Kodrad 2: Deklarerar variabeln 'b' som datatyp 'NUMBER'.
- Kodrad 4: Skriver ut meddelandet "Program started".
- Kodrad 5: Nyckelordet 'FOR' markerar början av loopen och loop_variabeln 'a' deklareras. Det kommer nu att ha värdet från 1 till 3
- Kodrad 7: Återställ värdet på 'b' till '1' varje gång.
- Kodrad 8: Inre medan slingan kontrollerar villkoret a>=b.
- Kodrad 10: Skriver ut värdet på "a" så länge som ovanstående villkor är uppfyllt.
- Kodrad 14: Skriver ut meddelandet "Program avslutat"
Sammanfattning
loop | FÖR Loop |
---|---|
EXIT-kriterier | Avsluta när räknaren når gränsen |
Användning | Bra att använda när loopräkning som ska utföras är känt. |