oracle怎么嵌套循环 oracle 嵌套循环

请大侠帮忙看看oracle 游标嵌套循环的问题 谢谢按照那三句描述揣测出来代码可以大致改为如下形式oracle怎么嵌套循环:
CREATE OR REPLACE PROCEDURE PRO_YGZC
IS
BEGIN
FOR RCD_T1 IN (
SELECT HL16,HL1,BS,REQUESTID,HL10,HL15 FROM 表1)
LOOP
FOR RCD_TAB IN (
SELECT column_value AS oacode FROM TABLE(SplitStr(RCD_T1.HL16, ',')) --表1里面oracle怎么嵌套循环的某个字段需要拆分
)LOOP
FOR RCD_T2 IN (
select t.workcode from 表2 t
where t.id = to_number(RCD_TAB.oacode)
)LOOP
if RCD_T2.workcode is not null and RCD_T1.HL1 is not null and RCD_T1.BS = '0' then
INSERT INTO 表3
(C_FLOWID,
C_EMPCODE,
C_OPERATETIME,
C_REASON,
C_DATE,
C_STATUS,
C_SYNFLAG)
VALUES
【oracle怎么嵌套循环 oracle 嵌套循环】(RCD_T1.REQUESTID,
RCD_T2.workcode,
sysdate,
RCD_T1.HL10,
to_date(RCD_T1.HL15, 'yyyy-mm-dd'),
'1',
'0');
ELSE
NULL;--是否应该日志记录或反馈异常oracle怎么嵌套循环?
END IF;
END LOOP;
END LOOP;
END LOOP;
END;
oracle10g嵌套循环的用法外循环i 从1取到100,内循环j 从1取到100 。
你可以想象一下执行步骤:
①i=1
j从1取到100 , result都不会等于500 , 故内循环完全执行 。即下一个外循环之前的result应该是1*100(i=1,j=100) 。
②接下来:i=2,类似i=1,result500,故最后打印出来的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的约数,由于5001000 , 当i同时是500和1000的约数的时候,不等result=1000,result=500的时候就跳出内循环了,result是取不到1000的 。
因此我们要找的是能整除1000而不能整除500的自然数里面最小的那个!
于是,i=40!
于是,当i=40,j=25的时候会跳出循环 。上一个打印的时候i=39,j=100.
其实嵌套循环就是循环里面套循环,这个只不过是加上了循环控制标识outer和inner(放在for前面,用于标记是哪个循环,里面的名字可以随便起),这样一来,我们就可以通过exit outer/inner…语句来控制跳出哪个循环了 。
Oracle中,关于循环嵌套或者游标使用方法这是什么规则?为什么没有
1,3,1
1,3,2
1,3 , 3
还有,要是按你那么说 , 为什么最后一列里有2的出现,bflag里也没有等于2的呀?
关于oracle怎么嵌套循环和oracle 嵌套循环的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读