`
superfofo
  • 浏览: 129941 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ORA-14551和PRAGMA AUTONOMOUS_TRANSACTION自治事务

SQL 
阅读更多
今天想在函数里面进行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 也对自治事务没有影响。通常可以考虑将自治事务定义成一个过程,在外层的事务中调用。


分享到:
评论

相关推荐

    ORA-00904: "WM_CONCAT": 标识符无效

    在Oracle数据库中,"ORA-00904"是一个常见的错误代码,它表示尝试引用一个不存在或无效的标识符。在这个场景下,错误信息提到的是"WM_CONCAT"函数,这表明在Oracle 19c数据库环境中,用户尝试使用WM_CONCAT函数,但...

    ORA-00904 WMSYS.WM_CONCAT标识符无效解决方案

    在Oracle数据库中,"ORA-00904"是一个常见的错误代码,它表示尝试引用一个不存在或无效的标识符。在这种情况下,错误是针对"WMSYS.WM_CONCAT"函数的,这是一个在某些Oracle版本中提供的聚合函数,用于字符串连接。...

    ORA-04052p5731178_92080_WINNT.zip

    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

    oracle网络配置(listener_ora-sqlnet_ora-tnsnames_ora).mht

    oracle ORA-03113 "end_of_file on communication channel"

    ORA-03113 "end_of_file on communication channel" ORA-03113 "end_of_file on communication channel" ORA-03113 "end_of_file on communication channel

    ORA-20011_ORA-06564_info.html

    ORA-20011,ORA06564错误分析

    Oracle_ORA-12518故障_处理

    ### Oracle ORA-12518 故障处理 #### 概述 在Oracle数据库管理过程中,遇到ORA-12518错误是较为常见的问题之一。此错误通常发生在客户端试图连接到数据库服务器的过程中,当监听器无法将客户端连接顺利地移交给...

    Oracle 报错ORA-00845 MEMORY_TARGET not supported on this system

    Oracle数据库在运行过程中,经常会遇到各种错误代码,错误代码ORA-00845是其中的一个,它是指“MEMORY_TARGET not supported on this system”。这个错误一般发生在尝试在不支持MEMORY_TARGET参数的系统上设置该参数...

    使用工具IMPDP导入数据时ORA-39002、ORA-39070错误排查

    在使用Oracle Data Pump工具IMPDP(Import Data Pump)进行数据导入的过程中,可能会遇到ORA-39002和ORA-39070等错误。本文将针对这些错误的排查方法进行详细介绍,帮助用户理解问题的原因及解决策略。 ### 错误...

    ORACLE ORA-00132 ORA-00214

    ### Oracle 错误 ORA-00132 和 ORA-00214 解析及处理 #### 一、错误概述 在Oracle数据库管理过程中,遇到ORA-00132和ORA-00214这类错误时,往往意味着数据库配置或启动过程中出现了问题。下面将对这两个错误进行...

    ORA-06512 数字或值错误,字符缓冲区太小

    ### ORA-06512 数字或值错误,字符缓冲区太小 #### 背景介绍 在Oracle数据库应用开发过程中,经常会遇到处理大量字符数据的情况。Oracle提供了多种数据类型来存储不同长度的字符串,其中`VARCHAR2`是用于存储变长...

    Oracle 11gr2连Oracle 19c 报ORA-28040 ORA-01017解决方法.pdf

    Oracle数据库不同版本间的客户端与服务端的连接问题通常涉及到安全和兼容性配置,这篇文章主要讲述了在Oracle 11g R2客户端尝试连接Oracle 19c服务端时,遇到了两个特定的错误:ORA-28040和ORA-01017,以及如何解决...

    oracle错误代码超级大全ORA-00000_to_ORA-40322.

    本资源摘要信息中,我们将详细介绍 Oracle 错误代码大全,从 ORA-00000 到 ORA-40322,涵盖了各种常见的 Oracle 错误代码、原因、解决方法等。 ORA-00000: 正常退出 * 原因:正常退出。 * 解决:无需解决,正常...

    如何处理错误ORA-29275:部分多字节字符

    ### 如何处理错误ORA-29275:部分多字节字符 #### 问题背景与描述 在Oracle数据库操作过程中,用户可能会遇到一个特定的错误提示——ORA-29275:部分多字节字符。这一错误通常出现在执行查询`SELECT * FROM V$...

    ora-00604错误解决方法

    ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法ora-00604 错误 解决 方法

    Oracle12cRAC数据库 出现ora-12520, ora-12516

    通过上述分析和建议,可以有效地解决Oracle12cRAC数据库中出现的ora-12520和ora-12516问题。关键在于合理调整连接参数、优化应用程序的连接管理策略以及确保监听器配置正确无误。实施这些改进措施后,可以显著提高...

    ora-01460 错误原因分析

    当执行某些特定的操作,如数据导入导出、跨平台复制表空间等时,如果涉及到的数据类型在源系统和目标系统之间不兼容,就可能触发ORA-01460错误。此错误表明Oracle数据库无法完成请求的数据转换,可能是由于源和目标...

    关于创建oracle 连接时报以下错误,ORA-01017 ORA-02063

    在创建Oracle数据库连接时遇到的错误ORA-01017和ORA-02063涉及到用户认证问题以及Oracle数据库版本之间的差异处理。ORA-01017错误表示用户名或密码无效,登录被拒绝,而ORA-02063则通常表示在Oracle数据库之间进行...

Global site tag (gtag.js) - Google Analytics