ORA-14551和PRAGMA AUTONOMOUS_TRANSACTION自治事务
今天想在函数里面进行update操作,发现这样子的错误会抛以下的DML错误,如下:
ORA-14551: cannot perform. a DML operation inside a query -
查询资料发现:
对数据库有写操作(INSERT、UPDATE、DELETE、CREATE、ALTER、COMMIT)的函数,是无法简单的用SQL来调用的.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
解决办法如下,只需在声明中添加 PRAGMA AUTONOMOUS_TRANSACTION
CREATE OR REPLACE FUNCTION FUN_SET_PROJECT_COST (V_BUDGET_OBJECT_ID IN VARCHAR2,V_ADJUST_ID IN VARCHAR2)RETURN VARCHAR2ISPRAGMA AUTONOMOUS_TRANSACTION;