自治事务
自治事务是在某个会话中独立开启一个事务,在其中处理的操作不会影响到同一会话中其他事务未提交的内容
自治事务的特点
1:这段程序不依赖于原有Main程序,比如Main程序中有未提交的数据,那么在自治事务中是查找不到的。
2:在自治事务中,commit或者rollback只会提交或回滚当前自治事务中的DML,不会影响到Main程序中的DML。
一般我们用PRAGMA AUTONOMOUS_TRANSACTION来说明改块为自治事务
例:
PROCEDURE P_GHBL_zdghxh(
menzrq ghxx.menzrq%TYPE,
jiuzxh ghxx.jiuzxh%TYPE,
kesxx ghxx.menzks%TYPE
) AS
--说明自治事务
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
Update ZDGHXH
Set MenZRQ=menzrq,
MaxXH=jiuzxh
Where MenZKS=kesxx;
if sql%notfound then
insert into ZDGHXH(MenZKS,MenZRQ,MaxXH)
values(kesxx,menzrq,jiuzxh);
end if;
COMMIT;
END;
主事务中调用
pkg_gh.P_GHBL_zdghxh(SUBSTR(C_BANLSJ, 1, 10),F_N2+1,R_MENZKS);