编写了一个oracle函数,函数体内实现一系列数据库的逻辑处理,涉及到数据的增删等操作,返回NCLOB类型。

然后通过查询方式调用函数:

SELECT PKG.MY_FUN('A')  FROM DUAL;

执行该sql报错:ORA-14551: 无法在查询中执行 DML 操作

处理方式:将函数修改为自治事务。加上 PRAGMA AUTONOMOUS_TRANSACTION 语句

示例如下:

   FUNCTION CALCULATE_MONTH_BONUS_DETAIL (CUR_MONTH IN NVARCHAR2)
RETURN NCLOB
IS
PRAGMA AUTONOMOUS_TRANSACTION;
CUR_MONTH_BILL_ID NUMBER (19); --固话单ID
...
BEGIN
...
COMMIT;
RETURN RESULT_STR;
END;
END PKG_MONTH_TARGET;
/

将事务设定为自治事务时,需要在函数体结尾出加入 COMMIT 或 ROLLBACK

如果未在结尾处提交或回滚,以查询方式执行时报错:ORA-06519: 检测到活动的自治事务处理,已经回退


参考文档:

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

检测到活动的独立的事务处理 已经回退

ORA-14551: 无法在查询中执行 DML 操作的更多相关文章

  1. PL/SQL“ ORA-14551: 无法在查询中执行 DML 操作”解决

    环境 Oracle 11.2.0 + SQL Plus 问题 根据以下要求编写函数:将scott.emp表中工资低于平均工资的职工工资加上200,并返回修改了工资的总人数.PL/SQL中有更新的操作, ...

  2. Oracle中 “ORA-14551: 无法在查询中执行 DML 操作” 如何解决

    在编写一个数据库函数时,方法实现需要查询后进行修改,出现ora-14551的错误 create or replace function fun_DxcBillSn(tabType integer,ta ...

  3. Oracle——无法在查询中执行 DML 操作

    今天在调用Oracle Function遇到一个异常

  4. 利用sqoop对mysql执行DML操作

    业务背景 利用Sqoop对MySQL进行查询.添加.删除等操作. 业务实现 select操作: sqoop eval \ --connect jdbc:mysql://127.0.0.1:3306/m ...

  5. CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。

    CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 主要方法 public CountDownLatch(int count); pu ...

  6. C# Winform中执行post操作并获取返回的XML类型的数据

    /// <summary> /// 返回指定日期的订单数据 /// </summary> /// <param name="StartDate"> ...

  7. Python自学:第四章 在for循环中执行更多操作(2)

    # -*- coding: GBK -*- magicians = ['alice', 'david', 'carolina'] for magician in magicians: print(ma ...

  8. Python自学:第四章 在for循环中执行更多操作(1)

    # -*- coding: GBK -*- magicians = ['alice', 'david', 'carolina'] for magician in magicians: print(ma ...

  9. Oracle 在存储过程或函数中执行字符串sql

    有时,我们需要在存储过程或函数中根据条件拼凑一些sql字符串语句,然后再执行拼凑后的sql字符串,如何做到呢? 参考以下代码: FUNCTION CALCULATE_TARGET_SCORE (CUR ...

随机推荐

  1. Python3选择支持非ASCII码标识符的缘由

    原文在: PEP 3131 -- Supporting Non-ASCII Identifiers. Python2并不支持非ASCII码标识符. PEP的全称是Python Enhancement ...

  2. 【读书笔记】iOS-软件测试与iOS测试

    一,软件测试的类型. 1.软件测试按照测试类型,可以划分为:单元测试,集成测试和系统测试. 2.单元测试是指对软件系统中最小可测试单元进行的检查和验证. 3.集成测试,在iOS软件开发中,集成测试主要 ...

  3. 能用HTML/CSS解决的问题,就不要用JS

    原因:简单. 简单就意味着更快的开发速度,更小的维护成本,同时往往具有更好的体验. 一,导航高亮 效果图: 代码: <!DOCTYPE html> <html lang=" ...

  4. Linux 下的 PostgreSQL 数据库+文件通用自动备份脚本

    由于 Odoo(原名 OpenERP)自 8.0 以来会生成 CSS,并把附件存储在文件系统中,因此以前单纯备份数据库的脚本已经不够用了.出于实际部署的考虑,我专门写了个较为通用的 Odoo 备份脚本 ...

  5. Salesforce中的单点登录简介

    单点登录的定义 引自维基百科: 单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性.当拥有这项属性时, ...

  6. Linux 时间及时区设置

    时间以及时区设置 by:授客 QQ:1033553122 1.首先确认使用utc还是local time. UTC(Universal Time Coordinated)=GMT(Greenwich ...

  7. Python实现批量梯度下降算法

    # -*- coding: UTF-8 -*- import numpy as npimport math # 定义基础变量learning_rate = 0.1n_iterations = 1000 ...

  8. python第八十八天----dom js

    DOM操作 1. 找到标签直接查找 document.getElementById 根据ID获取一个标签 document.getElementsByName 根据name属性获取标签集合 docum ...

  9. Debian-Linux配置网卡网络方法

    Debian不同于centos系统,网卡配置不是在/etc/sysconfig/network-scrip里面,而是在/etc/network/interfaces里面 1.Debian网络配置 配置 ...

  10. IDEA 编译 Jmeter 5.0(二次开发)

    windows10 操作系统,jdk1.8,Intellij IDEA 2018,jmeter5.0 1.下载 http://jmeter.apache.org/download_jmeter.cgi ...