本人初学oracle10g,求:oracle10g嵌套循环的具体用法

帮忙解释一下下面这个的意思:

declare

result int;

begin

<>

for i in 1..100 loop

<>

for j in 1..100 loop

result:=i*j;

exit outer when result=1000;

exit when result=500;

end loop inner;

dbms_output.put_line(result);

end loop outer;

dbms_output.put_line(result);

end;

完全看不明白里外层循环是这么实现的……

谢谢!!

外循环i 从1取到100,内循环j 从1取到100。

你可以想象一下执行步骤:

①i=1

j从1取到100,result都不会等于500,故内循环完全执行。即下一个外循环之前的result应该是1*100(i=1,j=100)。

②接下来:i=2,类似i=1,result<500,故最后打印出来的result=200.

③一直到:i=5,result=500的时候内循环也执行完了。

④当i=6,7,8,9,i*j永远不会等于500,故每次内循环都执行完毕才打印result,因此result依次等于600,700,800,900.

⑤当i=10,内循环j=50的时候,result=500,这时候(exit when result=500),所以跳出本次内循环,接着执行下一个外循环i=11.

⑥……等等 往下你可以思考一下,有哪些i会使内循环提前跳出?

对,很聪明,当i是500的约数的时候,内循环中会产生等于500的result,所以会提前跳出内循环。

同理,当i*j=1000的时候跳出外循环,也就是整个循环。最早发生的应该是i=10,j=100,但i=10的时候,不等j取到100的时候result会取到500(i=10,j=50),因此这个被pass掉。

这种情况也要求i是1000的约数,由于500<1000,当i同时是500和1000的约数的时候,不等result=1000,result=500的时候就跳出内循环了,result是取不到1000的。

因此我们要找的是能整除1000而不能整除500的自然数里面最小的那个!

于是,i=40!

于是,当i=40,j=25的时候会跳出循环。上一个打印的时候i=39,j=100.

其实嵌套循环就是循环里面套循环,这个只不过是加上了循环控制标识<>和<>(放在for前面,用于标记是哪个循环,里面的名字可以随便起),这样一来,我们就可以通过exit outer/inner…语句来控制跳出哪个循环了。

oracle 10个表循环10次,oracle10g for 循环 嵌套相关推荐

  1. oracle分库分表原理_题库分库分表架构方案

    方案 项目背景 在现在题库架构下,针对新购买的1300W多道数据进行整合,不影响现有功能.由于数据量偏多,需要进行数据的切分 目标场景 兼容旧的功能 对1300多W数据进行分库分表 需要对旧的数据进行 ...

  2. oracle中取top10,Oracle结合Mybatis实现取表TOP 10

    select top * from student 当然,我们还可以写的复杂一点,比如外加一些查询条件? 比如查询前10条成绩大于80分的学生信息 添加了where查询条件的版本: select to ...

  3. Oracle编程入门经典 第10章 PLSQL

    目录 10.1          总览... 1 10.2          基于程序块的开发... 1 试验:PL/SQL程序块... 2 工作原理... 2 块嵌套... 2 10.3       ...

  4. mybatis 取查询值_Oracle结合Mybatis实现取表TOP 10条数据

    之前一直使用mysql和informix数据库,查表中前10条数据十分简单: 最原始版本: select top * from student 当然,我们还可以写的复杂一点,比如外加一些查询条件? 比 ...

  5. 漫画:为什么程序员喜欢使用 0 ≤ i 10 左闭右开形式写 for 循环?

    作者 | 漫话编程 来源 | 漫话编程(ID:mhcoding) 当我们想要写一个循环体,期望执行10次的时候,我们会使用以下方式: for (int i=0; i<10; i++){} 可以看 ...

  6. Oracle 10g 应用补丁PSU 10.2.0.5.180717

    最近测试了一下在Oracle 10g下面(单实例下面)升级.应用补丁PSU 10.2.0.5.180717,打这个补丁的主要原因是 Oracle 将于 2019年6月启用新的SCN兼容性,并且由于Bi ...

  7. 1.18.2.10 解释表:Table.explain、物理执行计划等

    1.18.2.10.解释表 Table API 提供了一种机制来解释计算 Table 的逻辑和优化查询计划. 这是通过 Table.explain() 方法或者 StatementSet.explai ...

  8. (10)C#偷懒的开始永无止境的循环?

    本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新手在学习中的一般问题.此系列将会持续更新,包括别的语言以及实战都将使用对话的方式进行教学,基础编程语言教学适用于零基础小白,之后实战课程也将 ...

  9. ORACLE 10.2.01升级10.2.05 for windows 详细文档

    最近要做一个数据库的升级工作,提前在自己的PC机上练习了一下,这种文档在网上很多,但是大多都是使用命令编辑脚本,其实数据库还有一个DBUA的升级工具可以使用,使升级工作方便了很多. OS环境:wind ...

  10. 多线程学习--案例-子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次

    子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序. package Demo4; public class ThreadTe ...

最新文章

  1. 一些关于人工智能的讨论(二)
  2. 陕西打造12项精品体育赛事 加快建设体育强省
  3. PackageManagerService详解
  4. 编码GBK的不可映射字符
  5. 「Sqlserver」数据分析师有理由爱Sqlserver之三-最值得使有低投入高产出的Sqlserver功能...
  6. 解决“cv2.error: OpenCV(3.4.2) C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:356:...”
  7. 网络基础---网络层
  8. uva 1339 题解
  9. 步进电机驱动器介绍 --PWM
  10. 李南江 html链接,HTML5教程-多媒体标签-李南江
  11. 中国IT排名百强公司 .
  12. 3DLut表实现log视频的后期调色原理
  13. html设置控件坐标,html表格按钮位置调整 html中怎样改变表格的位置
  14. Windows——在设备和驱动器界面删除天翼云盘图标的方法
  15. 股票波段操作的技术缺陷在哪里?
  16. AddressBook 地址簿  (电话簿) 访问与修改-IOS开发
  17. 生活与管理中的18条实用定律
  18. Altium Designer 20使用技巧
  19. Python初级入门精讲-学习笔记
  20. 腾讯手游助手链接资源更新服务器失败怎么办,腾讯手游助手更新刺激战场提示网络出现异常更新失败怎么办?...

热门文章

  1. 【报错】Error inserting GREEM=30 YELLOW=4 RED=5 android.database.sqlite.SQLiteException: no such tab
  2. Java 调用执行其他语言的程序
  3. vue之vue-cookies
  4. 蓝桥杯- 煤球数目-java
  5. SYN Flood攻击及防御方法 (转)
  6. 对shell的简单认识
  7. Pylot——跨平台的网站压力测试工具
  8. Nginx+PHP(FastCGI)环境搭建
  9. SQL语句详解(三)——SQL子查询
  10. MySQL 第一次练习(安装MySQL)