PL/SQL 循环

32 篇文章 1 订阅
15 篇文章 1 订阅

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

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

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

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

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

FOR loop_counter IN [REVERSE] lower_bound .. higher_bound
LOOP
   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 CURSOR
LOOP
   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 condition
LOOP
   sequence_of_statements;
END LOOP;

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

#单进单出

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值