delphi5+oracle9i , query的requestlive=False时正确,但将requestlive的值一改为True就出错:Table do

  • 主题发起人 主题发起人 marshal
  • 开始时间 开始时间
M

marshal

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi5+oracle9i , query的requestlive=False时正确,但将requestlive的值一改为True就出错:Table does not exist.ORA-00942:表或视图不存在,请问是什么原因,如何解决?(100分)<br /> 如题,我的BDE是5.01版的
 
因为它返回的是不可编辑的记录集。。。
 
RequestLive is a request that a SELECT query returns an updatable (or live)
or read-only result set from the database back-end.
//RequestLive属性是要求是从后台数据库返回的可更改的结果集还是只读的结果集。
A False value for RequestLive (the default) causes the result set to
always be read-only. No request is made to the database back-end to
return an updatable result set.
//RequestLive属性缺省值为false,结果集为只读。不能使用后台数据库返回可更改的结果集。
A True value for RequestLive is a request to database back-end to
return an updatable result set.
//RequestLive属性值为true,后台数据库返回可更改的结果集。

A True value for RequestLive is a request for an updatable result set.
It does not guarantee that the database back-end will return
an updatable result set.
//设置为TURE不能保证后台数据将返回的是可编辑的结果集。。
See the documentation for the specific database system used
for the criteria needed for a live query result set. If the
database cannot return an updatable result set, a read-only
result set is returned instead. This is done automatically
and usually without error. Some database systems may raise
an exception on requests for live result sets that cannot be
fulfilled. Check the success of the request by inspecting thr dataset
component CanModify property.


查查帮助,后面还讲了很多。。



 
谢谢各位,这个问题已经解决了,但与你们说的都没有关系,将查询语句中的表名改为
大写就可以了,谁能告诉我原因这一百分归他!
 
我试了一下,还得把要查询的字段名也改为大写的才行啊。。

真是奇怪了。。。
 
呵。我刚看到你这的题目就猜到你想问什么,因为好多刚用delphi+oracle的都会
遇到这个问题,当然,答案根本不是楼上回答的。其实原因很简单的:
在delphi中用小写表名时,经过BDE,会把小写表名加上""发给ORACLE,而oracle
的系统表中各个表名都是大写的!所以,它会找不到该表。若是大写,就不会了。
其实,你用SQL Explore时,也会出现这个问题!
 
to HHSH:
但是如果该表的RequestLive属性为False时不会有任何错误,查询结果也正确
 
原因在于:
当requestlive=true时,Delphi会对你的SQL语句进行语法分析,但她没有把你的表名自动
转换为大写,而从ORACLE得到的表名却是大写的,所以就报错;当requestlive=false时,
Delphi没有必要分析你的语法,就直接传给Oracle,而Oracle会自动把你的表名转换为大
写,这样查询就能得到正确的结果。
 
这个解释我接受了,谢谢HHSH!同时也感谢youou贴出了这么多帮助 :-)
 
多人接受答案了。
 
后退
顶部