【发布时间】:2013-01-27 09:42:32
【问题描述】:
这个问题与我的previous question有关。
我有一个程序 (PROC_YEARLYACTIVELIST2) 将显示指定年份的所有活动记录。
它将删除TBLACTIVELISTYEARLY2之前的内容并插入PROC_YEARLYACTIVELIST2的结果。
我创建了一个函数,它将执行TBLACTIVELISTYEARLY2,从TBLACTIVELISTYEARLY 中选择所有记录并将其放入CURSOR C_IH,并为Crystal Report 返回表格。
以下只是部分代码:
我尝试将函数调用为
SELECT GETDEPLOYMENT_COMPUTER('2012') from dual;
并且有一个ORA-14551 错误
ORA-14551: cannot perform a DML operation inside a query
ORA-06512: at "NPLS.PROC_YEARLYACTIVELIST2", line 12
ORA-06512: at "NPLS.GETDEPLOYMENT_COMPUTER", line 3
搜索了一下,发现是因为和INSERT、UPDATE或者DELETE和DUAL有冲突。
还有其他方法可以在返回表的函数中执行我的过程吗?
谢谢!
【问题讨论】:
-
阅读自治事务。不漂亮,但可能是您情况的唯一解决方法。
-
感谢@a_horse_with_no_name 的回复! :)
标签: oracle function procedure dml