自治事务
PRAGMA AUTONOMOUS_TRANSACTION中文翻译过来叫“自治事务”,对于定义成自治事务的Procedure,实际上相当于一段独立运行的程序段,这段程序不依赖于主程序,也不干涉主程序。
自治事务常用于
事务的原子性会使将错误信息记入数据库表中变得很困难,因为当事务失败重新运行时,用来编写日志条目的INSERT语句还未完成。自治事务能独立地被提交或重新运行,而不影响正在运行的事务。因此成了编写错误日志表格的理想形式。
自治事务的特点
1:这段程序不依赖于原有Main程序,比如Main程序中有未提交的数据,那么在自治事务中是查找不到的。
2:在自治事务中,commit或者rollback只会提交或回滚当前自治事务中的DML,不会影响到Main程序中的DML。
自治事务可用于
匿名块
触发器
存储过程
用法:
例
PROCEDURE insert_itf_claim_form_status(x_itf_id OUT NUMBER,
p_form_code IN VARCHAR2,
p_action IN VARCHAR2,
p_user_id NUMBER) IS
PRAGMA AUTONOMOUS_TRANSACTION;
v_record itf_qms_claim_form_status%ROWTYPE;
BEGIN
SELECT qms_claim_form_status_s.nextval
INTO x_itf_id
FROM dual;
v_record.itf_qms_claim