由两部分组成:循环边界和循环体:例如:
语法如下:
LOOP executable statements END LOOP;
可以把EXIT或者EXIT WHEN语句放入循环体内,否则循环会无限;语法为:
EXIT; EXIT WHEN condition;
condition是一个布尔表达式。
语法如下:
WHILE condition LOOP executable statements END LOOP;
condition是一个布尔表达式,如果为TRUE,执行循环;为FALSE或NULL,循环终止。
语法格式为:
FOR loop_index IN [REVERSE] lowest_number .. highest_number LOOP executable statements END LOOP;
示例:
FOR loop_counter IN 1 .. 10 LOOP ...可执行语句... END LOOP;
游标型的FOR循环式和一个显示游标或者直接放在循环边界中的SELECT语句关联在一起的循环。
如果需要去除游标的每条记录依次处理,就可以使用游标FOR循环,这也是游标的主要用法。
语法格式为:
FOR record IN {cursor_name | explicit SELECT statement} LOOP executable statements END LOOP;
使用示例:
DECLARE CURSOR occupancy_cur IS SELECT pet_i d , room_number FROM occupancy WHERE occupied_dt = TRUNC (SYSDATE); BEGIN FOR occupancy_rec 1N occupancy_cur LOOP update_bill (occupancy_rec.pet _id , occupancy_rec.room_number); END LOOP; END;
Oracle11g提供了一个新特性 —— continue语句。
两种形式:无条件的CONTUNUE和有条件的CONTINUE WHEN。
还可以通过CONTINUE结束内层循环,紧接着继续外层循环的下一次迭代,需要使用标签给循环命名:
BEGIN <<outer>> FOR outer index 1N 1 .. 5 LOOP ... executable statement... <<inner>> FOR inner index 1N 1 .. 5 LOOP ... executable statement... CONTINUE outer; END LOOP inner; END LOOP outer; END; /