函数和自治事务pragma autonomous_transaction

2014-11-24 15:03:28 · 作者: · 浏览: 0
函数和自治事务pragma autonomous_transaction
有的时候,希望在select语句中使用自己定义的函数,并且这个函数除了返回特定的值之外,还执行update,insert,delete等操作。
数据库有写操作(update,insert,delete,crate,alert,commit)的函数是无法简单的用SQL来调用的。
如何实现?关键是pragma autonomous_transaction
如下例子:
       SQL> Create or replace function func_getid return int is 
          2   pragma autonomous_transaction; 
          3   vid int; 
          4  begin 
          5     select max(id) into vid from test_id; 
          6     update test_id set id=id+1; 
          7     commit; 
          8     return vid; 
          9  end; 
         10  / 
        
        Function created 
        
        SQL> select  func_getid from dual; 
        
        FUNC_GETID 
        ---------- 
                 1 
        
        SQL> select  func_getid from dual; 
        
        FUNC_GETID 
        ---------- 
                 2