从临时表返回数据时遇到的问题(ORA-08103: object no longer exists)

简介:   写个存储过程向临时表中插入数据,并从临时表中返回数据,在PL/SQL Developer中测试没问题,但用ASP.NET应用程序获取数据时出现:ORA-08103: object no longer exists  错误提示。

  写个存储过程向临时表中插入数据,并从临时表中返回数据,在PL/SQL Developer中测试没问题,但用ASP.NET应用程序获取数据时出现:ORA-08103: object no longer exists  错误提示。
  后来,把临时表的创建选项由on commit delete rows改为on commit preserve rows;  解决!
  但是,问题总出在“但是”上 :)
  在ASP.Net页中查询临时表数据时,每查一次都要多出一些重复记录,原因肯定是Oracle的会话连接没有结束,导致每次执行存储过程都要先插入记录。Oracle会话为什么没有结束,肯定是ASP.NET服务程序在数据连接池中保持着与数据库的连接。但是为了性能我们也不能不用连接池。这样基于Oracle 会话的临时表是不能用了。
  
  重新回到基于Oracle事务的临时表,也就是临时表的创建选项用on commit delete rows。然后,在ASP.Net应用程序中调用ODP自身的事务处理机制,问题得以解决!
  注:
  (1)理论上,不要在存储过程中执行Commit,即不要在存储过程中使用PL/SQL的事务处理, 否则ASP.NET页面也无法得到数据,因为commit 后,临时表中数据会自动清空。
  (2)理论上,不用ODP的话,用OLEDB或微软提供的ORACLE事务处理机制应该也可以,我没有测试。

目录
相关文章
Vue3接口数据报错TypeError: target must be an object
Vue3接口数据报错TypeError: target must be an object
1205 0
|
存储 数据挖掘 大数据
Pandas数据分析:处理文本数据(str/object)各类操作+代码一文详解(一)
Pandas数据分析:处理文本数据(str/object)各类操作+代码一文详解(一)
962 0
Pandas数据分析:处理文本数据(str/object)各类操作+代码一文详解(一)
|
1月前
|
JavaScript 前端开发 测试技术
Map 和 Object 在处理大量数据时性能差异
Map 和 Object 在处理大量数据时性能差异
|
2月前
|
数据处理
关于 SAP Dynpro 程序里的 OK_CODE 和 SAVE_OK 这两个全局变量
关于 SAP Dynpro 程序里的 OK_CODE 和 SAVE_OK 这两个全局变量
关于 SAP Dynpro 程序里的 OK_CODE 和 SAVE_OK 这两个全局变量
|
2月前
|
API 数据库 开发者
如何使用编码方式获取一个 Business Object 的所有 Attachment 数据
如何使用编码方式获取一个 Business Object 的所有 Attachment 数据
|
9月前
|
JSON JavaScript 数据格式
vue query传参刷新后数据变成[Object Object]
vue query传参刷新后数据变成[Object Object]
78 0
|
11月前
|
JavaScript 前端开发 API
Vue数据监听Object.definedProperty()方法的实现
Vue数据监听Object.definedProperty()方法的实现
|
JavaScript 前端开发
javascript实现对象数据键值不同的Object.keys循环读取解决方案
javascript实现对象数据键值不同的Object.keys循环读取解决方案
69 0
javascript实现对象数据键值不同的Object.keys循环读取解决方案
|
前端开发 数据可视化
漏刻有时数据可视化大屏常见问题(2):Ajax获取服务器数据出错了![object Object]
漏刻有时数据可视化大屏常见问题(2):Ajax获取服务器数据出错了![object Object]
158 0
|
JavaScript
Object.assign(this.$data, this.$options.data())-vue清空数据
Object.assign(target,...source)是es6新增的方法,可以合并对象,用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,它将返回目标对象,target:目标对象,source:源对象,通过Object.assign方法,把source合并给target,如果目标对象中的属性名与源对象中的属性名相同时,则属性将被源对象中的属性覆盖,然后返回target对象;
173 0