熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

小議Oracle11g的自治事務(一)

2013-11-13 22:18:41  來源: Oracle 

  這兩天看了g的CONCEPT文檔的事務部分發現自治事務還有一些以前沒有注意到的地方這裡簡單總結一下

  這一篇簡單描述一下自治事務可以使用的位置

  自治事務可以使用在以下的位置

  存儲過程和函數;

  本地過程和函數;

  包;

  對象方法;

  匿名塊的最頂層

  其中過程函數和包中使用自治事務很常見大部分自治事務的情況都屬於這種情況由於對象相對使用的比較少所以對象方法中的自治事務也是比較少見的不過由於對象中的方法和包中的存儲過程函數十分相似所以這種情況也是情理之中的

  剩下的兩種情況是以前所不了解的從來沒有想過對於本地過程和函數也是可以定義為自治事務的不過本地過程定義為自治事務是十分方便的功能使得過程中需要用到自治事務的功能時不必再額外定義一個自治事務的存儲過程只需要在當前的過程中定義一個自治的本地過程就可以了

  一個簡單的例子如下

   SQL> CREATE TABLE T_AUTO_TRANS (ID NUMBER NAME VARCHAR());

  表已創建 

   SQL> CREATE TABLE T_LOG (ID NUMBER NAME VARCHAR());

  表已創建

  下面建立一個LOCAL PROCEDURE的自治事務的例子

   SQL> DECLARE
   PRAGMA AUTONOMOUS_TRANSACTION;
   BEGIN
   INSERT INTO T_LOG VALUES ( AUTONOMOUS_TRANSACTION);
   COMMIT;
   END;
   /

  PL/SQL 過程已成功完成

   SQL> SELECT * FROM T_AUTO_TRANS;
  ID NAME
   
   TEST
  SQL> SELECT * FROM T_LOG;
  ID NAME
   
   AUTONOMOUS_TRANSACTION
   AUTONOMOUS_TRANSACTION
  SQL> ROLLBACK;

  回退已完成

   SQL> SELECT * FROM T_AUTO_TRANS;  未選定行

   SQL> SELECT * FROM T_LOG;
  ID NAME
   
   AUTONOMOUS_TRANSACTION
   AUTONOMOUS_TRANSACTION

  這種情況的意義沒有本地過程的大不過對於編寫包含大量的SQL和PL/SQL的sql文件還是有不少幫助的


From:http://tw.wingwit.com/Article/program/Oracle/201311/18742.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.