Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle WHILE LOOP-Beispiel

In Oracle PL/SQL führt die WHILE LOOP-Anweisung den zwischen WHILE LOOP und END LOOP geschriebenen Code aus, bis die Bedingung wahr ist. Unten gebe ich einige Beispiele für die WHILE LOOP-Anweisung von Oracle.

Syntax

WHILE logical_condition LOOP
-- some PL/SQL code
END LOOP;

Oracle WHILE LOOP-Beispiele

1. Schleife 10 mal und drucke die Tabelle

Im folgenden Beispiel führt WHILE LOOP die Anweisungen aus, bis der Wert der n_num-Variable kleiner oder gleich 10 ist. Es wird die Tabelle von 2 drucken, indem der Wert der n_num-Variable mit 1 für jede Iteration der Schleife erhöht wird.

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

Ausgabe:

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.

Vergessen Sie nicht, den Wert der n_num-Variablen zu erhöhen, damit sie bis zu 10 erreichen kann, sonst wird es eine Endlosschleife sein.

2. Schleife bis der boolesche Variablenwert WAHR ist

Im folgenden Beispiel wird es eine Schleife durchlaufen, bis der boolesche Variablenwert b_run WAHR ist, und den Variablenwert n_num drucken, indem es ihn für jede Iteration um 1 erhöht, und wenn der Wert der Variablen n_num größer als 5 ist, wird die Variable b_run auf FALSE gesetzt , damit WHILE LOOP seine Arbeit beenden kann.

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

Ausgabe:

1 Times
2 Times
3 Times
4 Times
5 Times
PL/SQL procedure successfully completed.

Vergessen Sie auch hierfür nicht, den Variablenwert b_run auf FALSE zu setzen, sonst wird es eine Endlosschleife sein. Sie können auch den exit; schreiben statt b_run :=FALSE; Anweisung um die Schleife zu verlassen .

Siehe auch:

  • Oracle FOR LOOP REVERSE-Beispiel
  • PL/SQL-Programm zum Drucken von Mitarbeiterdetails