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调用,就像是一个单独的事务,就算是某个出错了也不会相互产生影响。

 

posted @ 2014-01-15 08:18  jieqing  阅读(385)  评论(0编辑  收藏  举报