CREATE OR REPLACE PACKAGE cux_fnd_log_pkg IS PROCEDURE autoinsert_log; --自制事物处理过程 PROCEDURE unautoinsert_log; --非自制事物处理过程 END; CREATE OR REPLACE PACKAGE BODY cux_fnd_log_pkg IS PROCEDURE autoinsert_log IS PRAGMA AUTONOMOUS_TRANSACTION; BEGIN INSERT INTO cux_fnd_log_t (business_id, log_message, creation_date) VALUES (cux_fnd_log_s.nextval, 'auto insert', SYSDATE); COMMIT; END; PROCEDURE unautoinsert_log IS BEGIN INSERT INTO cux_fnd_log_t (business_id, log_message, creation_date) VALUES (cux_fnd_log_s.nextval, 'unauto insert', SYSDATE); COMMIT; END; END;oracle 自制事物处理功能可用于记录日志,主程序的rollback操作,不会影响到自制事物处理过程的commit操作。
1》测试自制事物处理insert:
BEGIN
INSERT INTO cux_fnd_log_t
(business_id, log_message, creation_date)
VALUES
(cux_fnd_log_s.nextval, 'main insert', SYSDATE);
cux_fnd_log_pkg.autoinsert_log;--自制
ROLLBACK;
END;测试结果:最终insert进去一个记录,自制事物处理过程中的记录insert成功;
2》测试非自制事物处理insert:
BEGIN
INSERT INTO cux_fnd_log_t
(business_id, log_message, creation_date)
VALUES
(cux_fnd_log_s.nextval, 'main insert', SYSDATE);
cux_fnd_log_pkg.unautoinsert_log; --非自制
ROLLBACK;
END;
测试结果:最终insert进去两个记录,非自制事物处理的commit、rollback操作会影响主程序;
oracle 自制事物处理
最新推荐文章于 2021-04-05 23:42:08 发布