sql >> Database >  >> RDS >> Oracle

Oracle WHILE LOOP Voorbeeld

In Oracle PL/SQL voert de WHILE LOOP-instructie de code uit die is geschreven tussen WHILE LOOP en END LOOP totdat de voorwaarde waar is. Hieronder geef ik enkele voorbeelden voor de Oracle WHILE LOOP-instructie.

Syntaxis

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

Oracle WHILE LOOP-voorbeelden

1. Loop 10 keer en print de tabel

In het volgende voorbeeld zal WHILE LOOP de instructies uitvoeren totdat de waarde van n_num variabele kleiner is dan of gelijk is aan 10. het zal de tabel van 2 afdrukken door de waarde van n_num variabele te verhogen met 1 voor elke iteratie van de lus.

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

Uitvoer:

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.

Vergeet niet de waarde van de variabele n_num te verhogen, zodat deze 10 kan bereiken, anders wordt het een oneindige lus.

2. Doorlussen totdat de Booleaanse variabele waarde WAAR is

In het volgende voorbeeld zal het herhalen totdat de b_run booleaanse variabele waarde TRUE is en zal het de n_num variabele waarde afdrukken door deze te verhogen met 1 voor elke iteratie en wanneer de waarde van n_num variabele groter is dan 5 dan zal de b_run variabele ingesteld worden op FALSE , zodat WHILE LOOP zijn werk kan afmaken.

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

Uitvoer:

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

Vergeet ook niet om de waarde van de variabele b_run in te stellen op FALSE, anders wordt het een oneindige lus. U kunt ook de exit; . schrijven in plaats van b_run :=FALSE; statement om de lus te verlaten .

Zie ook:

  • Oracle FOR LOOP REVERSE Voorbeeld
  • PL/SQL-programma om werknemersgegevens af te drukken
  1. OPGELOST:Microsoft Office 365 versie 2009 kan uw databasetoepassing breken

  2. 60 miljoen inzendingen, selecteer inzendingen uit een bepaalde maand. Hoe database optimaliseren?

  3. MySQL DROP-DATABASE

  4. Vind records uit de ene tabel die niet bestaan ​​in een andere