I Oracle PL/SQL exekverar WHILE LOOP-satsen koden som skrivits mellan WHILE LOOP och END LOOP tills villkoret är sant. Nedan ger jag några exempel för Oracle WHILE LOOP-satsen.
Syntax
WHILE logical_condition LOOP -- some PL/SQL code END LOOP;
Exempel på Oracle WHILE LOOP
1. Slinga 10 gånger och skriv ut tabellen
I följande exempel kommer WHILE LOOP att köra satserna tills värdet på variabeln n_num är mindre än eller lika med 10. Den kommer att skriva ut tabellen med 2 genom att öka värdet på variabeln n_num med 1 för varje iteration av loopen.
SET SERVEROUTPUT ON; DECLARE n_num NUMBER; n_table number := 2; BEGIN n_num := 1; WHILE n_num <= 10 LOOP DBMS_OUTPUT.put_line ('2 x ' || n_num || ' = '||(n_table * n_num)); n_num := n_num + 1; END LOOP; END; /
Utdata:
2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 2 x 4 = 8 2 x 5 = 10 2 x 6 = 12 2 x 7 = 14 2 x 8 = 16 2 x 9 = 18 2 x 10 = 20 PL/SQL procedure successfully completed.
Glöm inte att öka värdet på variabeln n_num så att den kan nå upp till 10, annars blir den oändlig loop.
2. Att loopa tills det booleska variabelvärdet är TRUE
I följande exempel kommer den att loopa tills det booleska variabelvärdet b_run är TRUE och kommer att skriva ut variabelvärdet n_num genom att öka det med 1 för varje iteration och när värdet för variabeln n_num är större än 5 kommer variabeln b_run att ställas in på FALSE , så att WHILE LOOP kan avsluta sitt jobb.
SET SERVEROUTPUT ON; DECLARE n_num NUMBER; b_run BOOLEAN := TRUE; BEGIN n_num := 1; WHILE b_run LOOP DBMS_OUTPUT.put_line (n_num || ' Times'); n_num := n_num + 1; IF n_num > 5 THEN b_run := FALSE; END IF; END LOOP; END; /
Utdata:
1 Times 2 Times 3 Times 4 Times 5 Times PL/SQL procedure successfully completed.
För detta också, glöm inte att ställa in b_run variabelvärdet till FALSE, annars blir det oändlig loop. Du kan också skriva exit; istället för b_run :=FALSE; uttalande för att lämna loopen .
Se även:
- Oracle FOR LOOP REVERSE Exempel
- PL/SQL-program för att skriva ut personalinformation