函数和自治事务pragma autonomous_transaction
函数和自治事务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