- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
迭代控制:部分
第6章 迭代控制:第一部分 本章目标 掌握简单循环的用法 掌握WHILE循环的用法 掌握数值型FOR循环的用法 循环控制 PL/SQL有4种类型的循环控制: 简单循环 WHILE循环 FOR循环 游标FOR循环 6.1 简单循环 语法: LOOP statement; END LOOP; 说明: 保留字LOOP标识简单循环的开始。 END LOOP是表示循环结构结束的保留字。 没有指定循环退出条件的循环称为无穷循环。 退出条件 EXIT 语句 LOOP statement; IF condition THEN EXIT; END IF; END LOOP; EXIT WHEN 语句 LOOP statement; EXIT WHEN condition; END LOOP; 【例6-1】使用简单循环,顺序输出1~10。 6.2 WHILE循环 语法: WHILE condition LOOP statement; END LOOP; 说明: 测试条件在循环迭代之前进行计算。 如果测试条件的计算结果为TRUE,则执行循环体;如果测试条件的计算结果为FALSE,则不执行循环体。 在WHILE循环体中,可以使用EXIT和EXIT WHEN语句,提前终止循环。 【例6-2】使用WHILE循环,顺序输出1~10。 6.3 数值型FOR循环 语法: FOR loop_counter IN [REVERSE] low..high LOOP statement; END LOOP; 6.3 数值型FOR循环 说明: 循环计数器loop_counter是隐含定义的索引变量。 循环计数器在循环之前和结束之后,都是没有定义的。 不能在FOR循环的外边引用循环计数器。 循环计数器只能由循环自身隐含的递增,任何改变循环计数器的执行语句都会带来编译错误。 使用REVERSE保留字,循环计数器从上限值high迭代到下限值low。 不管是否使用REVERSE保留字,下限值始终会被首先引用。 【例6-3】使用FOR循环,顺序输出1~10。 【例6-4】使用FOR循环,顺序输出1~10之间 的所有偶数。 * * 注意:EXIT语句只能出现在循环中。 declare v_num number := 0; begin loop v_num := v_num + 1; dbms_output.put_line(v_num); if v_num = 10 then exit; end if; end loop; end; 思考: (1)如果v_num没有初始化,则输出结果是什么? exit when v_num = 10; dbms_output.put_line(v_num); v_num := v_num + 1; (2)循环体中赋值语句与输出语句对调位置,则输出结果是什么? (3)如果取消EXIT条件,则输出结果是什么? exit; declare v_num number := 0; begin while v_num 10 loop v_num := v_num + 1; dbms_output.put_line(v_num); end loop; end; 思考: 如果while条件使用v_num=10,怎么修改上述代码? while v_num = 10 loop dbms_output.put_line(v_num); v_num := v_num + 1; end loop; 1 begin for v_num in 1..10 loop dbms_output.put_line(v_num); end loop; end; 循环计数器,无需在声明部分定义 思考:如果要逆序输出10~1,则如何修改上述代码? begin for v_num in reverse 1..10 loop dbms_output.put_line(v_num); end loop; end; begin for v_num in 1..10 loop if mod(v_num, 2) = 0 then dbms_output.put_line(v_num); end if; end loop; end; 思考:是否可以通过改变循环计数器的值,使之每次循环递增2来实现?
文档评论(0)