一、迭代控制:LOOP语句

循环多次重复一个语句或一系列语句。

PL / SQL提供了以下几种类型的循环:

•没有全面条件执行重复操作的基本循环
•FOR循环,基于计数器执行迭代操作

•WHILE循环根据条件执行重复操作

二、基本循环

LOOP语句的最简单形式是基本(或无限)循环,它在关键字LOOP和END LOOP之间包含一系列语句。

当循环内部的语句必须至少执行一次时,使用基本循环。

(1)基本循环退出

每当执行流程到达END LOOP语句时,控制权就被传递给相应的引入它的LOOP语句。

即使在进入循环时EXIT条件已经满足,基本循环也允许执行其语句至少一次。 没有EXIT语句,循环将是无限的。

语法:

LOOPstatement1;. . .EXIT [WHEN condition];
END LOOP;

(2)基本循环示例

在本例中,插入了CA的国家代码和蒙特利尔市的三个新的位置ID。

DECLAREv_countryid locations.country_id%TYPE := 'CA';v_loc_id locations.location_id%TYPE;v_counter NUMBER(2) := 1;v_new_city locations.city%TYPE := 'Montreal';
BEGINSELECT MAX(location_id) INTO v_loc_id FROM locationsWHERE country_id = v_countryid;LOOPINSERT INTO locations(location_id, city, country_id)VALUES((v_loc_id + v_counter), v_new_city, v_countryid);v_counter := v_counter + 1;EXIT WHEN v_counter > 3;END LOOP;
END;

(3)基本循环EXIT声明

您可以使用EXIT语句来终止循环。

控制权转到END LOOP语句后的下一个语句。 您可以将EXIT作为IF语句中的操作或循环内的独立语句。

DECLAREv_counter NUMBER := 1;
BEGINLOOPDBMS_OUTPUT.PUT_LINE('The square of '
||v_counter||' is: '|| POWER(v_counter,2));v_counter := v_counter + 1;IF v_counter > 10 THENEXIT;END IF;END LOOP;
END;

(4)基本循环EXIT语句规则

规则:
EXIT语句必须放在循环中。
•如果EXIT条件位于循环的顶部(在任何其他可执行语句之前)并且该条件初始为真,则循环退出并且循环中的其他语句从不执行。

•基本循环可以包含多个EXIT语句,但您应该只有一个EXIT点。

(5)基本循环退出时声明

使用WHEN子句可以有条件地终止循环。 遇到EXIT语句时,将评估WHEN子句中的条件。 如果条件产生TRUE,则循环结束并且控制传递到循环后面的下一个语句。

DECLAREv_counter NUMBER := 1;
BEGINLOOPDBMS_OUTPUT.PUT_LINE('The square of '
||v_counter||' is: '|| POWER(v_counter,2));v_counter := v_counter + 1;EXIT WHEN v_counter > 10;END LOOP;
END;

Oracle入门(十四.8)之迭代控制:基本循环Loop相关推荐

  1. jquery audio没有声音_Python实用案例编程入门:第十四章 通过声音控制您的计算机

    本章的主题为通过声音来控制您的电脑.当下的语音识别已经相对比较成熟,比如有的车载系统,或手机都支持语音识别,您可以通过声音来下达指令.比如您告诉导航系统"我要去北京",它会自动帮您 ...

  2. Oracle入门(十四.12)之游标FOR循环

    一.游标FOR循环 游标FOR循环处理显式游标中的行. 这是一个快捷方式,因为游标被打开,循环中的每次迭代都会获取一次行,当处理最后一行时会退出循环,并且游标会自动关闭. 当最后一行被提取时,循环本身 ...

  3. WebGL入门(三十四)-三维空间中鼠标控制物体旋转,用鼠标控制立方体的旋转

    用鼠标控制立方体的旋转 1. demo效果 2. 实现要点 2.1 注册鼠标事件 2.1.1 注册鼠标事件函数的声明 2.1.2 注册鼠标事件函数的调用 2.2 纹理图片加载 2.3 图形绘制 3. ...

  4. Oracle入门(四)之查询基本信息

    一.查询基本信息 (1) 查询实例服务 SQL> show parameter instance name (2)查询数据库名字 SQL> show parameter db_name; ...

  5. java怎样用类模板创建对象_java入门(十四) | 面向对象(OOP)之类和对象

    上一期是变量,在java中变量总是无处不在,而变量其意就是可以改变的数,在一般情况下我们可以以变量类型,变量名,变量值来描述它 这一期是给面向对象(OOP)开了一个头,对他的概念,三大特征有了一个基础 ...

  6. 流畅的python第十四章可迭代的对象,迭代器和生成器学习记录

    在python中,所有集合都可以迭代,在python语言内部,迭代器用于支持 for循环 构建和扩展集合类型 逐行遍历文本文件 列表推导,字典推导和集合推导 元组拆包 调用函数时,使用*拆包实参 本章 ...

  7. 闲人闲谈PS之三十四——项目成本费用控制阈值

    **惯例闲话:**最近有小伙伴问闲人有没有PS顾问资源,闲人问了一圈,结果发现都没有档期,不免让闲人有些失落,好心答应帮忙,结果帮不上-但是隐隐约约觉得在几年前说的话被应验了,PS模块一定是个热门的模 ...

  8. Oracle笔记 十四、查询XML操作、操作系统文件

    --1.随机数 select dbms_random.value from dual; select mod(dbms_random.random, 10) from dual; --0-9随机数 s ...

  9. slam入门——十四讲笔记(一)

    文章目录 第1讲 预备知识 第1部分 数学基础 第2讲 初识SLAM 2.1 引子:小萝卜的例子 2.2 经典视觉SLAM框架 2.3 SLAM问题的数学表述 2.4 实践:编程基础 1. 安装Lin ...

  10. python3行3列文件数据赋值_Python3快速入门(十四)——Pandas数据读取

    Python3快速入门(十四)--Pandas数据读取 一.DataFrame IO 1.CSV文件 pandas.read_csv(filepath_or_buffer, na_values='NA ...

最新文章

  1. linux常用命令(grep/cut/sed/which)
  2. 零基础学python需要多久-Python要学习多久能入门?精通需要多久?
  3. python培训班那家好-python培训班那个好?
  4. Count the Colors ZOJ - 1610
  5. docker容器 eureka 集成_微服务:基于 Docker 的微服务架构之分布式企业级实践参考...
  6. 里bl2和bl3为什么分开_分手挽回:为什么不建议过早同居
  7. 学习笔记:区块链概念入门
  8. 2021餐饮外卖商户研究报告
  9. 前端面试题目笔记-5
  10. linux单用户模式single=1,Linux 单用户模式single mode
  11. Ciena 在MEF16发布开放分布式NFV方案
  12. iphone 开发内存管理 心得
  13. 原生ajax接收json字符串(简单介绍)
  14. 备案 前置或专项审批的内容
  15. 基于机器学习和深度学习的推荐系统实战【图书推荐、电影推荐、音乐推荐】
  16. 赋值pingfang(i)=x; 与或非
  17. c语言追赶法求方程组的解,MATLAB-追赶法求解三对角方程组的算法原理例题与程序...
  18. 国产操作系统环境搭建(内含镜像资源)
  19. 关于电的计算机公式,电量计算公式_有关各类电量的计算公式
  20. 2019数字音乐市场年度回顾,QQ音乐全面领先

热门文章

  1. [mybatis]全局配置文件标签顺序
  2. [C++11]常量表达式函数
  3. [蓝桥杯2015决赛]五星填数-枚举+数论
  4. Redis基础数据结构内部实现简单介绍
  5. Tarjan缩点/边双/点双
  6. 牛客练习赛76 E 牛牛数数(线性基加二分)
  7. CF1156F. Card Bag
  8. 牛客网 【每日一题】5月29日 管道取珠
  9. CF1270H Number of Components(线段树)
  10. 【无码专区13】最小公倍数(线段树)