PL/SQL 循环

来源:互联网 发布:网络视听许可证 youku 编辑:程序博客网 时间:2024/05/29 08:54

PL/SQL 提供三种不同的循环:

  • FOR 循环
  • 简单循环
  • WHILE循环

FOR 循环

FOR循环适用于在循环前就已经明确知道需要循环的具体次数的情况。FOR循环有两种类型:

  • FOR 数值循环
  • FOR 光标循环

FOR 数值循环

FOR数值循环通过指定一个数值区间来定义:

FOR loop_counter IN [REVERSE] lower_bound .. higher_boundLOOP   sequence_of_statements;END LOOP;

FOR循环自动创建迭代器整形的loop_counter, 而不用人为声明,loop_counter的作用域为FOR循环本身,从lower_bound开始,每次循环加1,直到大于higher_bound,循环退出。

lower_bound必须小于或者等于higher_bound,循环体才可能被执行,如果lower_bound等于higher_bound,循环体将执行一次,如果lower_bound大于higher_bound,循环体将不会被执行。

lower_boundhigher_bound可以是数值字面量,或者数值类型的变量,表达式。

可选的REVERSE用于以相反的方向higher_bound .. lower_bound产生迭代。

FOR 光标循环

FOR 光标循环和FOR 数值循环很类似,只是循环是通过光标或者SELECT语句指定的。

FOR loop_record IN CURSORLOOP   sequence_of_statements;END LOOP;FOR loop_record IN (SELECT statement)LOOP   sequence_of_statements;END LOOP;

自动创建的迭代器为记录类型。

简单循环

简单循环适合于无法提取预知需要迭代的具体次数的情况,简单循环的循环体会被无条件进入一次,结构为:

LOOP   sequence_of_statements;END LOOP;

循环体可以用EXIT,EXIT WHENRETURN退出,或者在循环体中产生异常的时候退出。

EXIT WHEN在指定的条件condition求值为TRUE时退出循环

LOOP   ...   EXIT WHEN condition;END LOOP;

EXITRETURN无条件退出循环

LOOP   ...   EXIT;END LOOP;

通过结合使用IFEXIT或者RETURN,可以实现EXIT WHEN的效果。

WHILE循环

WHILE循环类似与简单循环,但是其在进入循环体前会先检查WHILE condition 条件是否为TRUE,为TRUE进入循环体,否则循环体将不会被执行。

WHILE conditionLOOP   sequence_of_statements;END LOOP;

每次迭代condition都会被求值,直到求值结果为FALSENULL的时候,循环结束。

单进单出

符合单进单出的循环,代码会显得更加简洁易懂。

EXIT, EXIT WHENRETURNGOTO语句在所有的循环语句中都可以被使用于退出循环。但是对于FOR和WHILE循环来说,其本身就指定了出口,FOR在迭代固定此处后自动结束,WHILE在条件求值不为真时自动结束,如果在这两类循环中使用了能够导致循环退出的语句,则会造成这两类循环有多个出口。

确保单进单出的一个原则:如果可能,在FOR和WHILE循环中,不使用退出循环的语句。FOR循环只在需要迭代所有范围内的值的时候使用。

单进单出的规则适用于函数与过程,符合该规则的函数或过程代码将会更加简洁易懂。

0 0
原创粉丝点击