ADO在查询视图时自动添加rowid,导致Ora 1445错误
来源:互联网 发布:手机控制电脑桌面软件 编辑:程序博客网 时间:2024/06/09 19:08
我的查询是类似
"select * from mv_view"
mv_view是一个多表联合视图.一直也没遇到啥问题,但是昨天用sql monitor抓错误的时候,发现查询被改成了
"select *,mv_view.rowid from mv_view"
并且触发了Oracle 1445错误,然后自动去掉rowid重新查询,成功!
后来找到了原因:
MSADO的 _RecordsetPtr的成员函数Open定义如下:
其中参数LockType是一个枚举,指定数据库锁定方式
之前使用的参数全部都是乐观锁adLockOptimistic,尝试换成adLockReadOnly后发现不会再自动添加rowid了.
原因是在ADO认为记录可能被Update时就会自动添加rowid,使用了adLockReadOnly参数相当于告知ADO记录不会被Update,ADO就不会自动添加rowid.
如果要Update 怎么办呢?那当然不能用只读锁,那就只能修改数据库视图,为视图加入唯一索引了.
PS:根据资料显示adLockReadOnly能够明显提高查询速度
- ADO在查询视图时自动添加rowid,导致Ora 1445错误
- 物化视图刷新的ORA-10632: Invalid rowid错误
- 关于在使用rowid和rownum时遇到ORA-01446错误的原因即解决方法。
- 在vc中是使用ado连接数据库时,没有初始化COM导致错误
- 在视图或者子查询中查询rowid出错提示cannot select ROWID from a join view without a key-preserved table
- 归档日志满导致ORA-13516错误,AWR报表不能自动收集
- 解决在win7 64位系统下通过ado连接oracle出现ORA-12154错误
- ORA-01410: invalid ROWID
- ORA-01410 invalid rowid
- 添加sysdba权限导致 ora-01996
- ORA-01445:无法从没有键值保存表的连接视图中选择 ROWID
- 解决:ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
- ORA-01219:数据库未打开:仅允许在固定表/视图中查询
- ORA-01219:数据库未打开:仅允许在固定表/视图中查询” 解决办法
- ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
- ORA-01219:数据库未打开:仅允许在固定表/视图中查询
- Oracle ORA-01219:数据库未打开:仅允许在固定表/视图中查询
- ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询解决之道
- .NET用 SendKyes 结合 Process 或 API FindWindow、SendMessage(PostMessage) 等控制外部程序[转]
- 《Android开发从零开始》——14.程序调试技术学习
- oracle join 多表连接----至少3张表
- DOS命令大全(经典收藏)
- 运行中hadoop增加datanode
- ADO在查询视图时自动添加rowid,导致Ora 1445错误
- Ajax 简单示例
- java基础整理8--API
- textarea回车符问题
- 非齐次线形差分方程和 齐次线形差分方程在同根情况下的共性
- rapi.h & rapi.lib 位置
- 一个人也可以很好,就像这样,是一个人的就进来看看吧!
- 一个人也可以很好,就像这样,是一个人的就进来看看吧!
- 一个人也可以很好,就像这样,是一个人的就进来看看吧!