Oracle——无法在查询中执行 DML 操作
今天在调用Oracle Function遇到一个异常
这是我的函数(为了再现随手写的)
create or replace function test_f(id varchar2) return varchar2 is
Result varchar2(100);
begin
insert into sfcs_temp_17109
(sn)values(id);
commit;
return result;
end test_f;
解决方法:增加PRAGMA AUTONOMOUS_TRANSACTION(自治事务介绍)
create or replace function test_f(id varchar2) return varchar2 is
Result varchar2(100);
PRAGMA AUTONOMOUS_TRANSACTION;
begin
insert into sfcs_temp_17109
(sn)values(id);
commit;
return result;
end test_f;
然后又遇到第二个问题
function如下:
create or replace function test_f(id varchar2) return varchar2 is
Result varchar2(100);
PRAGMA AUTONOMOUS_TRANSACTION;
MSD_PN VARCHAR2(50);
begin
BEGIN
select didbar into MSD_PN from t_did where diddid = ID;
IF MSD_PN IS NOT NULL THEN
RESULT := 'ERROR:' || ID || '在系統中不存在!';
RETURN RESULT;
END IF;
END;
insert into sfcs_temp_17109 (sn) values (id);
commit;
return result;
end;
Return Result commit或者Rollback
create or replace function test_f(id varchar2) return varchar2 is
Result varchar2(100);
PRAGMA AUTONOMOUS_TRANSACTION;
MSD_PN VARCHAR2(50);
begin
BEGIN
select didbar into MSD_PN from t_did where diddid = ID;
IF MSD_PN IS NOT NULL THEN
RESULT := 'ERROR:' || ID || '在系統中不存在!';
commit;
RETURN RESULT;
END IF;
END;
insert into sfcs_temp_17109 (sn) values (id);
commit;
return result;
end;
增加commit后即可正常使用。
Oracle——无法在查询中执行 DML 操作的更多相关文章
- Oracle中 “ORA-14551: 无法在查询中执行 DML 操作” 如何解决
在编写一个数据库函数时,方法实现需要查询后进行修改,出现ora-14551的错误 create or replace function fun_DxcBillSn(tabType integer,ta ...
- PL/SQL“ ORA-14551: 无法在查询中执行 DML 操作”解决
环境 Oracle 11.2.0 + SQL Plus 问题 根据以下要求编写函数:将scott.emp表中工资低于平均工资的职工工资加上200,并返回修改了工资的总人数.PL/SQL中有更新的操作, ...
- ORA-14551: 无法在查询中执行 DML 操作
编写了一个oracle函数,函数体内实现一系列数据库的逻辑处理,涉及到数据的增删等操作,返回NCLOB类型. 然后通过查询方式调用函数: SELECT PKG.MY_FUN('A') FROM DUA ...
- 利用sqoop对mysql执行DML操作
业务背景 利用Sqoop对MySQL进行查询.添加.删除等操作. 业务实现 select操作: sqoop eval \ --connect jdbc:mysql://127.0.0.1:3306/m ...
- CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。
CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 主要方法 public CountDownLatch(int count); pu ...
- Oracle DBLINK 抽数以及DDL、DML操作
DB : 11.2.0.3.0 原库实例orcl:SQL> select instance_name from v$instance; INSTANCE_NAME--------------- ...
- mysql、sql server、oracle数据库分页查询及分析(操作手册)
1.mysql分页查询 方式1: select * from table order by id limit m, n; 该语句的意思为,查询m+n条记录,去掉前m条,返回后n条记录.无疑该查询能够实 ...
- Oracle入门之对表内容的dml操作
oracle表的管理--添加数据 使用insert语句向表中插入数据 插入数据基本语法: insert into table[(column [,column...])] values(value [ ...
- C# Winform中执行post操作并获取返回的XML类型的数据
/// <summary> /// 返回指定日期的订单数据 /// </summary> /// <param name="StartDate"> ...
随机推荐
- UVA 12299 RMQ with shifts
就是线段树的单点修改和区间查询. 然而输入打了一个小时才弄清楚. #include<iostream> #include<cstdio> #include<cstring ...
- Redis 下载 安装
Redis 官网 https://redis.io/ github 主页 https://github.com/antirez/redis 下载页面 https://redis.io/download ...
- kubernetes监控终极方案-kube-promethues
kube-promethues简介 前面我们学习了Heapster+cAdvisor方式监控,这是Prometheus Operator出现之前的k8s监控方案.后来出现了Prometheus Ope ...
- [RoarCTF]Easy Java
目录 [RoarCTF]Easy Java 知识点 1.WEB-INF/web.xml泄露 [RoarCTF]Easy Java 题目复现链接:https://buuoj.cn/challenges ...
- 范仁义html+css课程---7、表单
范仁义html+css课程---7.表单 一.总结 一句话总结: 表单标签的话主要掌握form标签.input标签(以及input标签的不同的type值).select标签.textarea等标签,及 ...
- MacOS安装rJava
rJava出了名的难装,一大堆问题. 核心的问题: 1. java版本问题,最好用1.8版本的java 2. 编译器的问题 3. 相关头文件header的问题 之前几次装过,但都放弃了,这次花了一下午 ...
- 公网IP地址就一定是A类地址和B类地址吗?那C类地址就一定是私有地址吗?
A,B,C三类中既有公网地址,也有私网地址:在A类地址中,10.0.0.0-10.255.255.255是私有地址.在B类地址中,172.16.0.0-172.31.255.255是私有地址.在C类地 ...
- ora-8176原因及解决方法
在oracle undo_retention范围内,且_undo_autotune=false的情况下,一个语句执行的时候仍然发生ora-8176,语句如下: INSERT INTO XXX SELE ...
- 如何查看Linux服务器是32位还是64位?
使用命令 “getconf LONG_BIT” 如果返回的是32,那么就是32位 如果返回的是64,那么就是64位
- 使用协方差矩阵的特征向量PCA来处理数据降维
取2维特征,方便图形展示 import matplotlib.pyplot as plt from sklearn.decomposition import PCA from sklearn.data ...