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