循环可以多次运行一条或者多条语句。在PL/SQL中有3种类型的循环:
LOOP循环 直到显示结束条件出现之前一直运行。
WHILE 直达某个特定条件出现之前一直运行。
FOR循环 运行预先确定的次数。
接下来分别介绍这些循环
LOOP循环:
LOOP循环在显示结束它之前会一直运行,语法如下:
LOOP statements END LOOP;
要结束LOOP循环,可以使用EXIT或EXIT WHEN语句,EXIT语句立即结束循环,EXIT WHEN语句在指定条件出现时结束循环。
例子:
--LOOP循环 SET SERVEROUTPUT ON; DECLARE counter INTEGER := 0; BEGIN LOOP counter := counter + 1; dbms_output.put_line(counter); EXIT WHEN counter = 5; END LOOP; END; /
WHILE循环:
WHILE循环在某个特定条件出现之前一直运行,语法如下:
WHILE condition LOOP statements END LOOP;
例子:
--WHILE循环 SET SERVEROUTPUT ON; DECLARE counter INTEGER := 0; BEGIN WHILE counter < 5 LOOP counter := counter + 1; dbms_output.put_line(counter); END LOOP; END; /
FOR循环:
FOR循环会运行预先确定的次数,可通过给循环变量指定下限和上限来确定循环运行的次数,然后,循环变量在每次循环中递增(或递减),语法如下:
FOR loop_variale IN [REVERSE] lower_bound.. upper_bound LOOP statements END LOOP;
例子:
loop_variable指定循环变量,可以将已经存在的变量用作循环变量,也可以让循环语句自己创建循环变量(当所指定的变量不存在时会发生这种情况)。循环变量的值在每一次循环中都增加(如果使用了REVERSE关键字则减少)1。
REVERSE指定在每一次循环中循环变量都会减少。循环变量先被初始化为其上限,然后在每一次循环中递减1,直至达到其下限。下限依然要在上限之前定义。
lower_bound指定循环的上限。在没有使用REVERSE的情况下,循环变量初始化为这个下限值。
upper_bound指定循环的下限。如果使用了REVERSE,循环变量就初始化为这个上限。
例子:
--FOR循环 SET SERVEROUTPUT ON; BEGIN FOR count1 IN 1..5 LOOP dbms_output.put_line(count1); END LOOP; END; /