I Oracle PL/SQL udfører WHILE LOOP-sætning koden skrevet mellem WHILE LOOP og END LOOP, indtil betingelsen er sand. Nedenfor giver jeg nogle eksempler på Oracle WHILE LOOP-sætning.
Syntaks
WHILE logical_condition LOOP -- some PL/SQL code END LOOP;
Eksempler på Oracle WHILE LOOP
1. Sløjfe 10 gange og udskriv bordet
I det følgende eksempel vil WHILE LOOP udføre sætningerne, indtil værdien af n_num-variabelen er mindre end eller lig med 10. Den udskriver tabellen med 2 ved at øge værdien af n_num-variablen med 1 for hver iteration af løkken.
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; /
Output:
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.
Glem ikke at øge værdien af variabelen n_num, så den kan nå op til 10, ellers bliver den uendelig sløjfe.
2. At sløjfe, indtil den boolske variabelværdi er SAND
I det følgende eksempel vil den løkke, indtil den booleske variabelværdi b_run er TRUE, og den vil udskrive n_num-variabelværdien ved at øge den med 1 for hver iteration, og når værdien af n_num-variabelen er større end 5, indstilles b_run-variablen til FALSE , så WHILE LOOP kan afslutte sit job.
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; /
Output:
1 Times 2 Times 3 Times 4 Times 5 Times PL/SQL procedure successfully completed.
For dette også, glem ikke at sætte b_run variabel værdi til FALSE, ellers vil det være uendelig loop. Du kan også skrive exit; i stedet for b_run :=FALSE; sætning for at forlade sløjfen .
Se også:
- Oracle FOR LOOP REVERSE-eksempel
- PL/SQL-program til at udskrive medarbejderoplysninger