循环可以对语句运行零次或多次。在PL/SQL中有3种类型的循环:
简单循环 直到显式结束循环之前一直运行。
WHILE循环 直到某个特定条件出现之前一直运行。
FOR循环 运行预先确定的次数。
简单循环
简单循环在显式结束之前会一直运行。简单循环的语法如下:

LOOP
	statements
END LOOP;

要结束简单循环,可以使用EXIT或EXIT WHEN语句。EXIT语句立即结束循环,EXIT WHEN语句在指定条件出现时结束循环。
变量v_counter在循环开始之前被初始化为0,每次循环给v_counter加1.EXIT WHEN语句表示,当v_counter等于5时循环结束。

v_counter := 0;
LOOP
	v_counter := v_counter + 1;
	EXIT WHEN v_counter = 5;
END LOOP;

EXIT WHEN 语句可以出现在循环代码中的任何位置。
1.4.2 WHILE循环
WHILE循环在某个特定条件出现之前一直运行。WHILE循环的语法如下:

WHILE condition LOOP
	statements
END LOOP;

当v_counter变量小于6时WHILE循环会一直执行:

v_counter := 0;
WHILE v_counter < 6 LOOP
	v_counter := v_counter + 1;
END LOOP;

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

FOR loop_variable IN [REVERSE] lower_bound .. upper_bound LOOP
	statements
END LOOP;

loop_variable指定循环变量。可以将已经存在的变量用作循环变量,也可以让循环语句自己创建循环变量。循环变量的值在每一次循环中都增加1。
REVERSE指定在每一次循环中循环变量都会递减。循环变量先被初始化为其上限,然后在每一次循环中递减1,直至达到其下限。下限依然要在上限之前定义。
lower_bound指定循环的下限。在没有使用REVERSE的情况下,循环变量初始化为这个下限值。
upper_bound指定循环的上限。如果使用REVERSE,循环变量初始化为这个下限。
举个栗子

FOR v_counter2 IN 1..5 LOOP
	DBMS_OUTPUT.PUT_LINE(v_counter2);
END LOOP;

下面这个栗子使用了REVERSE

FOR v_counter2 IN REVERSE 1..5 LOOP
	DBMS_OUTPUT.PUT_LINE(v_counter2);
END LOOP;

for循环 自然数求和1…100

declare 
v_a   number :=0;
v_sum number :=0;
begin
   for i in 1..100   loop
       v_a := v_a +1;--每循环一次加一
       v_sum := v_sum + v_a;
       dbms_output.put_line(v_a ||' ' || v_sum);
    end loop;
    dbms_output.put_line('自然数求和1..100的结果是:' || v_sum);
  end;

简化

declare 
v_sum number :=0;
begin
   for i in 1..100   loop
       v_sum := v_sum + i;
       dbms_output.put_line(i);
    end loop;
    dbms_output.put_line('自然数求和1..100的结果是:' || v_sum);
  end;