`

ORA-14551: 无法在查询中执行 DML 操作 解决方法

阅读更多


--创建测试表
create table fn_dml_test
(
  ID    NUMBER(20),
  text  VARCHAR2(200)
)

--创建函数
CREATE OR REPLACE FUNCTION fn_test(ID NUMBER) RETURN NUMBER
IS
/*
14551, 00000, "cannot perform a DML operation inside a query "
// *Cause:  DML operation like insert, update, delete or select-for-update
//          cannot be performed inside a query or under a PDML slave.
// *Action: Ensure that the offending DML operation is not performed or
//          use an autonomous transaction to perform the DML operation within
//          the query or PDML slave.
*/
pragma  AUTONOMOUS_TRANSACTION;
BEGIN
  INSERT INTO fn_dml_test(id,text) values(ID,'success');
  COMMIT;
  RETURN 1;
EXCEPTION
  WHEN OTHERS THEN
  INSERT INTO fn_dml_test(id,text) values(ID,'fail');
  COMMIT;
  RETURN 0;
END;

--查询验证
SELECT fn_test(1) from dual
  • 大小: 44.2 KB
分享到:
评论

相关推荐

    oracle报错大全(珍藏版)

    执行DML操作时发生错误。这可能是因为数据完整性问题、权限不足或其他数据库级别的问题。 #### ORA-00056: "." Schema Not Specified 在DDL语句中未指定模式名称时触发。这可能是因为DDL语句格式错误或逻辑错误。 ...

    Oracle错误代码大全

    * ORA-00034: 无法在当前 PL/SQL 会话中 二、资源错误 * ORA-00050: 获取入队时操作系统出错 * ORA-00051: 等待资源超时 * ORA-00052: 超出最大入队资源数 * ORA-00053: 超出最大入队数 * ORA-00054: 资源正忙,...

    Oracle error code 大全

    Oracle 错误代码大全是 Oracle 数据库管理系统中的一组错误代码,用于描述各种 Oracle 错误的原因和解决方法。这些错误代码涵盖了 Oracle 数据库管理系统的各个方面,包括会话管理、进程管理、内存管理、锁定管理、...

    ORACLE错误一览表.

    - **描述**:尝试分配的对象太大,无法在当前操作系统上分配。 - **解决方法**: - 减小对象的大小。 - 考虑升级操作系统或更改存储方案。 ##### ORA-00065: FIXED_DATE的初始化失败 - **描述**:日期初始化参数`...

    oracle报错的详细列表

    当尝试在操作系统中分配的对象超出限制时触发。 #### ORA-00065: FIXED_DATE的初始化失败 当 `FIXED_DATE` 初始化失败时触发。 #### ORA-00066: LOG_FILES为但需要成为才可兼容 当 `LOG_FILES` 参数的值不符合兼容...

    oracle错误代码大全

    19. ORA-00034: 无法在当前PL/SQL会话中执行某些操作,可能涉及会话状态或功能限制。 20. ORA-00035: LICENSE_MAX_USERS不能小于当前用户数,这涉及到数据库许可证和并发用户数。 21. ORA-00036: 超过递归SQL调用...

    oracle数据库-错误编码大全

    当数据库中的对象太大,无法在操作系统上分配足够的空间时,将出现此错误。这通常要求增加操作系统的存储容量。 - ORA-00065: FIXED_DATE的初始化失败。在数据库实例启动过程中,由于环境变量FIXED_DATE设置错误,...

    oracle常见错误及解决方法

    Oracle数据库在运行过程中可能会遇到各种错误,这些错误通常以ORA-XXXX的形式呈现,每个错误代码对应着特定的问题和解决策略。以下是一些常见的Oracle错误及其解释和解决方法: 1. ORA-00001: 违反唯一约束条件 当...

    oracle错误一览表

    - **解决方法**: 减少同时执行的DML操作数量或增加DML锁的最大数量。 **ORA-00056: 对象上的DDL锁以不兼容模式挂起** - **描述**: 在对象上挂起了不兼容的DDL锁。 - **解决方法**: 确保DDL操作与其他操作之间的一致...

    ORACLE错误码及解决方法

    这些错误可能是因为试图在不存在的对象上操作,或者试图在非键保留的视图上执行DML语句。解决方案包括检查视图定义、主键或约束的存在性,以及视图依赖的其他对象。 错误码如ORA-00904、ORA-00906、ORA-00907等,...

    Oracle错误代码大全.pdf

    19. ORA-00034: 无法在当前PL/SQL会话中执行某些操作,可能是由于会话限制或语法错误。 20. ORA-00035: LICENSE_MAX_USERS不能小于当前用户数,这涉及到数据库许可证限制。 21. ORA-00036: 超过递归SQL级别的最大...

    Oracle错误代码

    执行DML(数据操纵语言)操作时,锁的数量超过了系统允许的最大值。 #### ORA-00056: 对象'.'上的DDL锁以不兼容模式挂起 在执行DDL(数据定义语言)操作时,尝试获取的锁与现有锁模式不兼容。 #### ORA-00057: ...

    ORACLE错误代码文档

    在PL/SQL环境中执行某些操作受限。 20. ORA-00035: LICENSE_MAX_USERS 不能小于当前用户数 许可证限制的用户数量小于当前活跃用户数,需要增加许可证或减少用户。 21. ORA-00036: 超过递归 SQL 级别的最大值 ...

    oracle 错误一览表

    - **解决方法**:在执行操作前,确保指定了正确的用户。 #### ORA-00030: User ID not found - **描述**:找不到指定的用户ID。 - **解决方法**:确认用户ID拼写正确,并且该用户确实存在于数据库中。 #### ORA-...

    oracle错误代码详细的总结与分析.docx

    19. **ORA-00034: 无法在当前 PL/SQL 会话中:** 有些操作不能在PL/SQL会话中执行。 20. **ORA-00035: LICENSE_MAX_USERS 不能小于当前用户数:** 许可证限制的用户数量小于当前已登录的用户数。 21. **ORA-00036: ...

    oracle错误码大全

    **描述**: 无法在当前的PL/SQL环境中执行特定操作。 **解决方法**: - 检查PL/SQL环境的配置。 - 确认操作是否适用于当前环境。 #### ORA-00035: LICENSE_MAX_USERS不能小于当前用户数 **描述**: 许可证的最大用户...

Global site tag (gtag.js) - Google Analytics