PL/SQL提供了丰富的循环结构来重复执行一些列语句。Oracle提供的循环类型有:
1. 无条件循环LOOP-END LOOP语句
2. WHILE循环语句
3. FOR循环语句

在上面的三类循环中EXIT用来强制结束循环。

Ø — LOOP循环

LOOP循环是最简单的循环,也称为无限循环,LOOP和END LOOP是关键字。

语法格式:LOOP循环

LOOP
—循环体
END LOOP;

语法格式:
1. 循环体在LOOP和END LOOP之间,在每个LOOP循环体中,首先执行循环体中的语句序列,执行完后再重新开始执行。
2. 在LOOP循环中可以使用EXIT或者[EXIT WHEN 条件]的形式终止循环。否则该循环就是死循环。

【例】执行1+2+3+…+100的值

代码演示:LOOP循环

  1. DECLARE
  2. COUNTER NUMBER(3):=0;
  3. SUMRESULT NUMBER:=0;
  4. BEGIN
  5. LOOP
  6. COUNTER := COUNTER +1;
  7. SUMRESULT := SUMRESULT + COUNTER;
  8. IF COUNTER >=100THEN --①
  9. EXIT;
  10. END IF;
  11. -- EXIT WHEN COUNTER>=100;
  12. END LOOP;
  13. DBMS_OUTPUT.PUT_LINE('RESULT IS :'|| TO_CHAR(SUMRESULT));
  14. END;

代码解析:
① LOOP循环中可以使用IF结构嵌套EXIT关键字退出循环
② 注释行,该行可以代替①中的循环结构,WHEN后面的条件成立时跳出循环。

Ø — WHILE循环

先判断条件,条件成立再执行循环体。

语法格式:WHILE循环

WHILE 条件 LOOP
—循环体
END LOOP;

代码演示:WHILE循环

  1. DECLARE
  2. COUNTER NUMBER(3):=0;
  3. SUMRESULT NUMBER:=0;
  4. BEGIN
  5. WHILE COUNTER <100
  6. LOOP
  7. COUNTER := COUNTER +1;
  8. SUMRESULT := SUMRESULT + COUNTER;
  9. END LOOP;
  10. DBMS_OUTPUT.PUT_LINE('RESULT IS :'|| SUMRESULT);
  11. END;

Ø — FOR循环

FOR循环需要预先确定的循环次数,可通过给循环变量指定下限和上限来确定循环运行的次数,然后循环变量在每次循环中递增(或者递减)。FOR循环的语法是:

语法格式:FOR循环

FOR 循环变量 IN [REVERSE] 循环下限..循环上限 LOOP LOOP
—循环体
END LOOP;

语法解析:
循环变量:该变量的值每次循环根据上下限的REVERSE关键字进行加1或者减1。
REVERSE:指明循环从上限向下限依次循环。

代码演示:FOR循环

  1. DECLARE
  2. COUNTER NUMBER(3):=0;
  3. SUMRESULT NUMBER:=0;
  4. BEGIN
  5. FOR COUNTER IN1 .. 100
  6. LOOP
  7. SUMRESULT := SUMRESULT + COUNTER;
  8. END LOOP;
  9. DBMS_OUTPUT.PUT_LINE('RESULT IS :'|| SUMRESULT);
  10. END;