今天想在函数里面进行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 VARCHAR2
IS
PRAGMA AUTONOMOUS_TRANSACTION;
PRAGMA AUTONOMOUS_TRANSACTION自治事务
当前的存储过程作为已有事务的子事务运行,子事务的commit,rollback操作不影响父事务的状态
在你的一个事务(外层事务)中可以定义一个或几个自治事务。自治事务可以独立commit,不对外层事务产生影响,同样外层事务的 rollback 也对自治事务没有影响。通常可以考虑将自治事务定义成一个过程,在外层的事务中调用。
分享到:
相关推荐
在Oracle数据库中,"ORA-00904"是一个常见的错误代码,它表示尝试引用一个不存在或无效的标识符。在这个场景下,错误信息提到的是"WM_CONCAT"函数,这表明在Oracle 19c数据库环境中,用户尝试使用WM_CONCAT函数,但...
在Oracle数据库中,"ORA-00904"是一个常见的错误代码,它表示尝试引用一个不存在或无效的标识符。在这种情况下,错误是针对"WMSYS.WM_CONCAT"函数的,这是一个在某些Oracle版本中提供的聚合函数,用于字符串连接。...
ORA-00604: 递归SQL层1出现错误 ORA-03106: 致命的双工通信协议错误 ORA-02063: 紧接着line(源于dblink) 以及 ORA-04052: 在查找远程对象时出错 ORA-00604: 递归SQL层1出现错误 ORA-03120: 双工转换例行程序:整数...
oracle网络配置(listener_ora-sqlnet_ora-tnsnames_ora).mht
ORA-03113 "end_of_file on communication channel" ORA-03113 "end_of_file on communication channel" ORA-03113 "end_of_file on communication channel
### 解决Drop Goldengate 用户时报ORA-00604 ORA-20782 ORA-06512问题 #### 一、问题背景与现象 在进行Oracle数据库管理过程中,经常会遇到需要删除用户的场景。当尝试执行`drop user goldengate cascade;`命令时,...
ORA-20011,ORA06564错误分析
### Oracle ORA-12518 故障处理 #### 概述 在Oracle数据库管理过程中,遇到ORA-12518错误是较为常见的问题之一。此错误通常发生在客户端试图连接到数据库服务器的过程中,当监听器无法将客户端连接顺利地移交给...
Oracle数据库在运行过程中,经常会遇到各种错误代码,错误代码ORA-00845是其中的一个,它是指“MEMORY_TARGET not supported on this system”。这个错误一般发生在尝试在不支持MEMORY_TARGET参数的系统上设置该参数...
在使用Oracle Data Pump工具IMPDP(Import Data Pump)进行数据导入的过程中,可能会遇到ORA-39002和ORA-39070等错误。本文将针对这些错误的排查方法进行详细介绍,帮助用户理解问题的原因及解决策略。 ### 错误...
### Oracle 错误 ORA-00132 和 ORA-00214 解析及处理 #### 一、错误概述 在Oracle数据库管理过程中,遇到ORA-00132和ORA-00214这类错误时,往往意味着数据库配置或启动过程中出现了问题。下面将对这两个错误进行...
### ORA-06512 数字或值错误,字符缓冲区太小 #### 背景介绍 在Oracle数据库应用开发过程中,经常会遇到处理大量字符数据的情况。Oracle提供了多种数据类型来存储不同长度的字符串,其中`VARCHAR2`是用于存储变长...
### 如何处理错误ORA-29275:部分多字节字符 #### 问题背景与描述 在Oracle数据库操作过程中,用户可能会遇到一个特定的错误提示——ORA-29275:部分多字节字符。这一错误通常出现在执行查询`SELECT * FROM V$...
Oracle数据库不同版本间的客户端与服务端的连接问题通常涉及到安全和兼容性配置,这篇文章主要讲述了在Oracle 11g R2客户端尝试连接Oracle 19c服务端时,遇到了两个特定的错误:ORA-28040和ORA-01017,以及如何解决...
本资源摘要信息中,我们将详细介绍 Oracle 错误代码大全,从 ORA-00000 到 ORA-40322,涵盖了各种常见的 Oracle 错误代码、原因、解决方法等。 ORA-00000: 正常退出 * 原因:正常退出。 * 解决:无需解决,正常...
ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法ora-00604 错误 解决 方法
通过上述分析和建议,可以有效地解决Oracle12cRAC数据库中出现的ora-12520和ora-12516问题。关键在于合理调整连接参数、优化应用程序的连接管理策略以及确保监听器配置正确无误。实施这些改进措施后,可以显著提高...
当执行某些特定的操作,如数据导入导出、跨平台复制表空间等时,如果涉及到的数据类型在源系统和目标系统之间不兼容,就可能触发ORA-01460错误。此错误表明Oracle数据库无法完成请求的数据转换,可能是由于源和目标...