PL/SQL 一个数据对象一个事务(rollback,submit)
/***********************************************
一个数据对象一个事务(且记录错误信息到处理对象)
***********************************************/
1 LOOP 要处理的对象 2 begin 3 invoke api1 (api没有ROLLBACK机制) 4 5 if api1有错 then 6 rollback; 7 获取错误信息; 8 更新错误信息到处理对象; 9 end if 10 11 invoke api2 (api有ROLLBACK机制) 12 13 if api2有错 then 14 获取错误信息; 15 更新错误信息到处理对象; 16 end if 17 18 exception 19 when others then 20 rollback; 21 获取异常信息; 22 更新异常信息到处理对象; 23 end; 24 25 commit; 26 27 END LOOP;
由于没有raise,所以就算程序遇到了错误,也会一直执行下去,但是会rollbck出错的那部分,并且会记下错误信息。
所以,每个api调用,就像是一个单独的事务,就算是某个出错了也不会相互产生影响。