oracle 两层循环,exception 跳出到外层 请教
小弟今天在写plsql,遇到个问题:
问题简化,就是,我要导入两个文件到数据库,每个文件都有许多行,其中有一行有错,这个文件的所有行就不导入,直接到下个文件
fileName row_num data
A 1 a1
A 2 a2
A 3 a3
B 1 b1
B 2 b2
B 3 b3
把表1insert到相同机构的表2中,两层for loop 外层 loop filename,内层loop data,假如,fileA有一个data,有错误(例如a2)
就要rollback之前的inser(例如a1),不再进行接下来的insert(例如a3),直接到 fileB。
我直接根据思路,写的是
for file in
(select dinstinct filename form table)
loop
begin
for row in
(select data form table where filename=file.filename)
loop
insert xx to xx
end loop
commit;
exception
rollback; --有错误 :ORA-01002:fetch out of sequence
end;
end loop
反正,大概思路就是,出于某些原因,一定要两层循环,内层循环假如有错,全部rollback,本次大循环全都不算,也不再继续做,然后直接进入下一次大循环。
请教怎么写,谢谢
------解决方案--------------------给你个思路吧,不用for in循环 用fetch into 然后 使用continue,很好实现的
------解决方案--------------------这个简单,在内层循环每次开始位置加一个savepoint,每次循环结束位置加一个exception roll back to到你设置的savepoint就会继续往下执行,savepoint具体用法熟悉一下