oracle循环语句
来源:互联网 发布:linux打开一个文件 编辑:程序博客网 时间:2024/06/09 18:24
编写循环控制结构时,用户可以使用基本循环,WHILE循环和FOR循环等三种类型的循环语句,下面分别介绍使用这三种循环语句的方法。
1.基本循环
LOOP statement1; ...... EXIT [WHEN condition];END LOOP;
当使用基本循环时,无论是否满足条件,语句至少会被执行一次,当condition为TRUE时,会退出循环,并执行END LOOP后的相应操作。当编写基本循环时一定要包含EXIT语句,否则会陷入死循环。另外还应该定义循环控制变量,并且在循环体内修改循环控制变量的值。示例:
SQL> declare 2 i int:=1; 3 begin 4 loop 5 insert into testloop values(i); 6 exit when i=10; 7 i:=i+1; 8 end loop; 9 end;10 /
2.WHILE循环
基本循环至少要执行一次循环体内的语句,而对于WHILE循环来说,只有条件为TRUE时,才会执行循环体内的语句。WHILE循环以WHILE …LOOP开始,以END LOOP结束。
WHILE condition LOOP statement1; statement2; .....END LOOP;
当condition为TRUE时,执行循环体内的语句,而当condition为FALSE或NULL时,会退出循环,并执行END LOOP后的语句。当使用WHILE循环时,应该定义循环控制变量,并在循环体内改变循环控制变量的值。示例:
SQL> declare 2 i int:=1; 3 begin 4 while i<=10 loop 5 insert into testloop values(i); 6 i:=i+1; 7 end loop; 8 end; 9 /
3.FOR循环
当使用基本循环或WHILE循环时,需要定义循环控制变量,并且循环控制变量不仅可以使用NUMBER类型,也可以使用其他数据类型。当使用FOR循环时,ORACLE会隐含定义循环控制变量。
FOR counter in [REVERSE] lower_bound. .upper_bound LOOP statement1; statement2; .......END LOOP;
counter是循环控制变量,并且该变量由oracle隐含定义,不需要显式定义。lower_bound和upper_bound分别对应于循环控制变量的下界值和上界值,默认情况下,当使用FOR循环时,每次循环时循环控制变量会自动增1.如果指定REVERSE选项,那么每次循环时循环控制变量会自动减1。示例:
SQL> begin 2 for i in reverse 1..10 loop 3 insert into testloop values(i); 4 end loop; 5 end;
4.嵌套循环和标号
嵌套循环是指在一个循环语句之中嵌入另一个循环语句,而标号(label)则用于标记嵌套块或嵌套循环,通过在嵌套循环中使用标号,可以区分内层循环和外层循环,并且可以在内层循环中直接退出外层循环,在编写时可以用<>定义标号。示例:
SQL> declare 2 result int; 3 begin 4 <<outer>> 5 for i in 1..100 loop 6 <<inter>> 7 for j in 1..100 loop 8 result:=i*j; 9 exit outer when result=1000;10 exit when result=500;11 end loop inter;12 dbms_output.put_line(result);13 end loop outer;14 dbms_output.put_line(result);15 end;16 /
当执行以上PL/SQL块时,如果result=1000,那么直接退出外层循环,而result=500时只会退出内层循环。
- Oracle 条件语句/循环语句
- Oracle 条件语句/循环语句
- oracle学习--循环语句
- oracle循环语句
- oracle学习--循环语句
- Oracle 循环语句 总结
- oracle学习--循环语句
- oracle学习--循环语句
- oracle循环语句小结
- oracle循环语句小结
- oracle循环语句小结
- oracle 循环控制语句
- oracle循环语句小结
- oracle循环语句
- oracle循环语句小结
- oracle循环语句小结
- oracle循环语句小结
- Oracle循环语句
- MySQL 5.7不能登录的解决方案
- android富文本的实现
- Python 标准库 —— 队列(Queue,优先队列 PriorityQueue)
- 排序方法
- 24c02直插式封装参数
- oracle循环语句
- 357. Count Numbers with Unique Digits
- shell中的特殊字符
- ToStringBuilder学习(三):abstract、子类与多态的单例模式
- 在搬瓦工VPS下搭建VPN打造美服LOL
- map to json
- 索引器访问离散字段(输出有点小问题 暂时还没找到错误。) “homephone”引号里面多打了个 空格键! 导致字符串不匹配
- ubuntu16.04+cuda7.5+caffe深度学习环境搭建
- Bootstrap 弹出框modal上层的输入框不能获得焦点问题