Oracle
 sql >> база данни >  >> RDS >> Oracle

Пример за Oracle WHILE LOOP

В Oracle PL/SQL изразът WHILE LOOP изпълнява кода, написан между WHILE LOOP и END LOOP, докато условието е вярно. По-долу давам няколко примера за оператора на Oracle WHILE LOOP.

Синтаксис

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

Примери на Oracle WHILE LOOP

1. Завъртете 10 пъти и отпечатайте таблицата

В следващия пример WHILE LOOP ще изпълнява операторите, докато стойността на n_num променлива е по-малка или равна на 10. Той ще отпечата таблицата с 2, като увеличава стойността на n_num променлива с 1 за всяка итерация на цикъла.

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

Изход:

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.

Не забравяйте да увеличите стойността на променливата n_num, така че да може да достигне до 10, в противен случай това ще бъде безкраен цикъл.

2. Цикъл, докато стойността на булевата променлива е TRUE

В следващия пример той ще се завърта, докато стойността на булева променлива b_run е TRUE и ще отпечата стойността на променливата n_num, като я увеличи с 1 за всяка итерация и когато стойността на n_num променлива е по-голяма от 5, тогава ще зададе променливата b_run на FALSE , така че WHILE LOOP може да завърши работата си.

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

Изход:

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

За това също не забравяйте да зададете стойност на променливата b_run на FALSE, в противен случай това ще бъде безкраен цикъл. Можете също да напишете изход; вместо b_run :=FALSE; операторза излизане от цикъла .

Вижте също:

  • Пример на Oracle FOR LOOP REVERSE
  • PL/SQL програма за отпечатване на данни за служителите
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Объркване с Oracle CONNECT BY

  2. Как да планирате работа в Oracle SQL Developer?

  3. Как да получите текущ обект Connection в Spring JDBC

  4. Опитвам се да внедря приложението Oracle-ADF на Tomcat 7

  5. Създаване на таблица от заявка с помощта на различно пространство за таблици (Oracle SQL)