您的位置:首页 > 其它

PRAGMA AUTONOMOUS_TRANSACTION

2016-02-18 11:23 330 查看
PRAGMA AUTONOMOUS_TRANSACTION

当前的存储过程作为已有事务的子事务运行,子事务的commit,rollback操作不影响父事务的状态

可以用于

(1)匿名块

(2)触发器

(3)存储过程

 例子:

[c-sharp]
view plain
copy

procedure addRowAutonomous  
(  
  pID         in TLOG.id%type,  
  pLDate      in TLOG.ldate%type,  
  pLHSECS     in TLOG.lhsecs%type,   
  pLLEVEL     in TLOG.llevel%type,  
  pLSECTION   in TLOG.lsection%type,  
  pLUSER      in TLOG.luser%type,  
  pLTEXTE     in TLOG.ltexte%type  
)  
is  
PRAGMA AUTONOMOUS_TRANSACTION;  
begin  
 addRow  
  (  
   pID         => pID,  
   pLDate      => pLDate,  
   pLHSECS     => pLHSECS,   
   pLLEVEL     => pLLEVEL,  
   pLSECTION   => pLSECTION,  
   pLUSER      => pLUSER,  
   pLTEXTE     => pLTEXTE  
  );  
  commit;  
  exception when others then  
      PLOG.ERROR;  
      rollback;  
      raise;  
end;  

 

自治事务可以用于在客户化程序中记录调试信息

[c-sharp]
view plain
copy

PROCEDURE insert_cux_debug_info(  
    ........  
  ) IS PRAGMA AUTONOMOUS_TRANSACTION;  
    ........  
  BEGIN  
    INSERT INTO cux_debug_info VALUES ........;   
    COMMIT;  
  END;  

说明:在由需要记录调试信息的地方调用 insert_cux_debug_info。可用来调试程序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: