Oracle入门(十四.9)之迭代控制:WHILE和FOR循环

、WHILE循环

您可以使用WHILE循环重复一系列语句,直到控制条件不再为TRUE。 条件在每次迭代开始时进行评估。

当条件为FALSE或NULL时,循环终止。 如果条件在循环开始时为FALSE或NULL,则不会执行进一步的迭代。

WHILE condition LOOPstatement1;statement2;. . .
END LOOP;
(1)在语法中
•条件是布尔变量或表达式(TRUE,FALSE或NULL)

•语句可以是一个或多个PL / SQL或SQL语句

•如果条件中涉及的变量在循环体内不发生变化,则条件保持为TRUE,循环不会终止。
- 注意:如果条件产生NULL,则循环被绕过,并且控制传递给循环后面的语句。
WHILE condition LOOPstatement1;statement2;. . .
END LOOP;

(2)在本例中,国家代码CA和城市蒙特利尔的三个新位置ID正在添加。 该示例中显式声明了计数器。

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

(3)随着WHILE循环的每次迭代,计数器(v_counter)递增。 如果迭代次数小于或等于数字3,则执行循环内的代码,并将一行插入到位置表中。

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

(4)计数器超过此城市和国家/地区的新位置数后,控制循环的条件评估为FALSE,循环终止。

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


二、FOR循环描述

FOR循环具有与基本循环相同的通用结构。 另外,它们在LOOP关键字之前有一个控制语句来设置PL / SQL执行的迭代次数。

FOR counter IN [REVERSE]lower_bound..upper_bound LOOPstatement1;statement2;. . .
END LOOP;
(1)FOR循环规则:
•使用FOR循环快速测试迭代次数。
•不要申报柜台; 它被隐含地声明。

•lower_bound .. upper_bound是必需的语法。

FOR counter IN [REVERSE]lower_bound..upper_bound LOOPstatement1;statement2;. . .
END LOOP;

(2)FOR循环语法
•Counter是一个隐式声明的整数,其值在循环的每次迭代中自动增加或减少(如果使用REVERSE关键字,则减小),直到达到上限或下限。
•REVERSE使计数器从每个上限到下限迭代递减。 (请注意,下限是首先引用的。)

•lower_bound指定计数器值范围的下限。
•upper_bound指定计数器值范围的上限。

•不要申报柜台。 它被隐含地声明为一个整数。

(3)FOR循环示例

您已经学会了如何使用简单的LOOP和WHILE循环为国家代码CA和蒙特利尔市插入三个新位置。 幻灯片向您展示了如何通过使用FOR循环实现相同。

DECLAREv_countryid locations.country_id%TYPE := 'CA';v_loc_id locations.location_id%TYPE;v_new_city locations.city%TYPE := 'Montreal';
BEGINSELECT MAX(location_id) INTO v_loc_idFROM locationsWHERE country_id = v_countryid;FOR i IN 1..3 LOOPINSERT INTO locations(location_id, city, country_id)VALUES((v_loc_id + i), v_new_city, v_countryid );END LOOP;
END;

(4)FOR循环指南

•仅在循环中引用计数器; 它在循环外部是未定义的。
•不要将计数器作为分配的目标。
•循环限制都不应为NULL。

(5)FOR循环表达式示例

在编写FOR循环时,LOOP语句的下限和上限不需要是数字文字。 它们可以是转换为数值的表达式。

DECLAREv_lower NUMBER := 1;v_upper NUMBER := 100;
BEGINFOR i IN v_lower..v_upper LOOP...END LOOP;
END;

(6)何时使用循环指南

•循环内的语句必须至少执行一次时使用基本循环。
•如果必须在每次迭代开始时评估条件,则使用WHILE循环。
•如果迭代次数已知,则使用FOR循环。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为TFS配置跨平台的生成服务器Xplat (Ubuntu Linux)

1. 概述 从TFS 2015开始&#xff0c;微软开始支持跨平台的构建代理。你可以使用TFS的Xplat代理&#xff0c;方便的在基于IOS, Unix和Linux的服务器上搭建生成代理&#xff0c;实现构建、发布等功能。本文档已Ubuntu为例&#xff0c;指导如何安装和运行Xplat代理。 2. 配置TFS的…

分数优先遵循志愿php源码_分数优先 遵循志愿

本报讯 昨日&#xff0c;广东省考试院发布2019年我省普通高校招生平行志愿投档及录取实施办法。今年我省依旧实行普通高校招生平行志愿投档录取模式&#xff0c;按照“分数优先、遵循志愿”的原则&#xff0c;根据考生高考成绩高低排序和院校志愿先后顺序投档&#xff0c;投出…

Oracle入门(十四.10)之显式游标简介

一、上下文区域和游标Oracle服务器分配一个称为上下文区域的私有内存区域来存储由SQL语句处理的数据。 每个上下文区域&#xff08;因此每个SQL语句&#xff09;都有一个与其关联的游标。您可以将游标视为上下文区域的标签&#xff0c;或者将其作为指向上下文区域的指针。 事实…

1.(转)canal背景与工作原理

【README】 1.canal是一个工具&#xff0c;由阿里开源&#xff0c;用于解析mysql的binlog增量日志&#xff0c;重放日志还原出业务数据&#xff0c;下游可以送入 es&#xff0c;mysql&#xff0c;hbase等&#xff1b; 2.本文以下内容转自&#xff1a;GitHub - alibaba/canal:…

Dapper、Entity Framework 和混合应用

你大概注意到了&#xff0c;自 2008 年以来&#xff0c;我写过许多关于 Entity Framework&#xff08;即 Microsoft 对象关系映射器 (ORM)&#xff09;的文章&#xff0c;ORM 一直是主要的 .NET 数据访问 API。市面上还有许多其他 .NET ORM&#xff0c;但是有一个特殊类别因其强…

html让时间只展示年月日_如何用html写代码,使得在网页上显示当前的时间和日期...

展开全部在网页62616964757a686964616fe59b9ee7ad9431333363363537中动态的显示日期时间&#xff0c;一般都是使用js来实现&#xff0c;很简单&#xff0c;一看就会。网页中动态的显示系统日期时间function startTime(){var todaynew Date();//定义日期对象var yyyy today.get…

Oracle入门(十四.11)之使用显式游标属性

一、游标和记录 此示例中的游标基于SELECT语句&#xff0c;该语句仅检索每个表行的两列。 如果它检索了六列或七&#xff0c;八&#xff0c;二十个呢&#xff1f; DECLAREv_emp_id employees.employee_id%TYPE;v_last_name employees.last_name%TYPE;CURSOR emp_cursor ISSEL…

(转 )centos8安装mysql

【1】下载 mysql rpm包 MySQL :: Download MySQL Yum Repositoryhttps://dev.mysql.com/downloads/repo/yum/ 【2】安装mysql 根据官方文档安装&#xff0c;如下&#xff1a; MySQL :: A Quick Guide to Using the MySQL Yum Repositoryhttps://dev.mysql.com/doc/mysql-yu…

IIS负载均衡-Application Request Route详解第一篇: ARR介绍

说到负载均衡&#xff0c;相信大家已经不再陌生了&#xff0c;本系列主要介绍在IIS中可以采用的负载均衡的软件&#xff1a;微软的Application Request Route模块。 其实Application RequestRoute已经有很多文章介绍过了&#xff0c;但是有很多的文档都是英文的&#xff0c;笔者…

单位矩阵的逆矩阵是它本身吗_矩阵运算、单位矩阵与逆矩阵(二)

逆矩阵什么是逆矩阵&#xff1f;数有倒数&#xff1a;逆矩阵也是相同的概念&#xff0c;但我们写为A-1逆矩阵的定义计算逆矩阵我们怎么知道计算结果是正确的&#xff1f;我们把矩阵和逆矩阵相乘来看看&#xff1a;我们为什么需要逆矩阵&#xff0c;举个例子&#xff1a;一帮人坐…

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

一、游标FOR循环游标FOR循环处理显式游标中的行。 这是一个快捷方式&#xff0c;因为游标被打开&#xff0c;循环中的每次迭代都会获取一次行&#xff0c;当处理最后一行时会退出循环&#xff0c;并且游标会自动关闭。 当最后一行被提取时&#xff0c;循环本身在迭代结束时自动…

结合Jexus + Kestrel 部署 asp.net core 生产环境

ASP.NET Core 是微软的全新的框架。这一框架的目标 ︰ 跨平台针对云应用优化解除 System.Web 的依赖。 获得下面三个方面的优势&#xff0c;你可以把它认为是一个C# 版本的NodeJS&#xff1a; 1&#xff09; 模块化实现 2&#xff09; 一切都尽可能的-异步 3&#xff09; 依赖关…

centos普通用户修改文件权限_用户管理(特殊权限、特殊属性、umask 默认权限 )

特殊权限suidLinux 系统文件除了9位基本权限&#xff0c;还有额外3位特殊权限&#xff0c;分别是  SUID(set uid)&#xff0c; -rwsr-xr-x  SGID(set gid)&#xff0c; -rw-r-sr-x  SBIT(sticky bit), -rw-r-xr-t  这3位特殊权限不建议使用(除系统默认的特殊权限可…

Oracle入门(十四.13)之带参数的游标

一、带参数的游标参数是一个变量&#xff0c;其名称用于游标声明中。 当游标打开时&#xff0c;参数值被传递给Oracle服务器&#xff0c;Oracle服务器使用它来决定要将哪些行检索到光标的活动集中。这意味着您可以在块中多次打开和关闭显式光标&#xff0c;或者在同一个块的不同…

4.canal抽取失败报is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts‘

【README】 1.本文po出了报错【messageXXX is blocked because of many connection errors; unblock with mysqladmin flush-hosts】的解决方法&#xff1b; 2.解决方法参考了 StackOverflow&#xff1a; mysql - How to unblock with mysqladmin flush hosts - Stack Overfl…

raid配置ssd为缓存_超融合硬件选配推荐指南 | 第三期:SSD 与 HDD

本期《SMTX OS 硬件选配推荐指南》继续与大家分享单机硬件配置中存储相关的内容——固态硬盘 SSD 和机械硬盘 HDD 章节。前两期摘录了单机硬件配置中的 CPU 选择和内存选择参考&#xff0c;感兴趣的读者可点击回顾。如果希望获取完整《指南》&#xff0c;可点击这里下载。单机硬…

Oracle入门(十四.14)之处理异常

一、什么是异常&#xff1f; 在执行破坏程序正常运行的程序期间发现错误时会发生异常。 有很多可能的例外原因&#xff1a;用户在输入时出现拼写错误; 程序无法正常工作; 广告网页不存在; 等等。 你能想到在使用网站或应用程序时遇到的错误吗&#xff1f;二、PL / SQL中的异常…

1.(译)NoSQL与SQL数据库对比

【README】 1.本文翻译自&#xff1a; NoSQL Vs SQL Databases | MongoDB 2.NoSQL指的是不止sql&#xff08;not only sql&#xff09;&#xff1b;NoSQL数据库是2000年代末开发的&#xff0c;重点是扩展&#xff0c;快速查询&#xff0c;允许频繁变更&#xff0c;让编程更简…

C#使用Redis集群缓存

本文介绍系统缓存组件&#xff0c;采用NOSQL之Redis作为系统缓存层。 一、背景 系统考虑到高并发的使用场景。对于并发提交场景&#xff0c;通过上一章节介绍的RabbitMQ组件解决。对于系统高并发查询&#xff0c;为了提供性能减少数据库压力&#xff0c;我们加入缓存机制&#…

Oracle入门(十四.15)之捕获Oracle服务器异常

一、异常类型 本课讨论预定义和非预定义的Oracle服务器异常。&#xff08;1&#xff09;使用PL / SQL处理异常有两种提出异常的方法&#xff1a; •Oracle服务器隐式&#xff08;自动&#xff09;&#xff1a;- 发生Oracle错误并自动引发相关异常。- 例如&#xff0c;如果在SEL…