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"> ...
随机推荐
- javascript轮询请求服务器
抛出问题:web浏览器如何与服务保持通信? 方法一:Ajax轮询 方法二:EventSource轮询 方法三:websocket保持长连接 下面的解决方案是,Ajax轮询与EventSource轮询的 ...
- mysql adddate()函数
mysql> ); +---------------------------+ | adddate() | +---------------------------+ | -- | +----- ...
- Echarts 入门操作
Echarts具有丰富的图表,可以说是数据可视化的神器: 1.下载Echarts 到官网或者点击以下文字[下载Echarts]即可下载: ①官网下载地址:https://echarts.baidu.c ...
- golang 文件传输小demo(转载)
转载地址:https://www.cnblogs.com/qq702368956/p/10195497.html 获取文件信息需要用到os. Stat接口,发送文件前开启接收者(服务端),启动客户端先 ...
- [转]Windows内存堆内容整理总结
在系统安全研究中,堆,是一个极其重要的内存区域以及研究的热点.堆,区别于栈区.全局数据区以及代码区,它的主要作用是允许程序在运行时动态地申请某个大小的内存空间.本文将从宏观到微观,简单梳理总结一下Wi ...
- SVM 输出分类概率(python)
import numpy as np from sklearn import svm X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]]) y = np ...
- flask 实现最简单的登录功能
视图函数如下: # Sample.py from flask import Flask, render_template, url_for, request, redirect app = Flask ...
- ThreadLocal:的面试
ThreadLocal: 为解决多线程程序的并发问题提供了一种新的思路.使用这个工具类可以很简洁地编写出优美的多线程程序. 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变 ...
- GIS地理工具案例教程——批量合并影像-批量镶嵌栅格
GIS地理工具案例教程--批量合并影像-批量镶嵌栅格 商务合作,科技咨询,版权转让:向日葵,135-4855__4328,xiexiaokui#qq.com 关键词:批量.迭代.循环.自动.智能.地理 ...
- uploadifive 1.1.2 动态传参
之前用过Flash版本的uploadify,写过一篇关于uploadify动态传参的文章(点击打开链接).后来有了HTML5版本的上传控件,叫uploadifive,测试着用了一下,效果还不错.这里主 ...