oracle 10个表循环10次,oracle10g for 循环 嵌套

本人初学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…语句来控制跳出哪个循环了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值