使用Query修改Oracle数据库的问题?(难度值高)(70分)

  • 主题发起人 主题发起人 lee3star
  • 开始时间 开始时间
L

lee3star

Unregistered / Unconfirmed
GUEST, unregistred user!
我用Delphi 3连接Oracle 7.3,我想用Query控件对数据库进行修改,SQL语句也极简单:select * from bus。我把Query的RequestLive设为True,连接时显示:“表或视图不存在”;后来有网友告诉我用UpdateSQL控件,我用了,对本地数据库都可以实现,但是用到Oracle时就实现不了,同样的错误:“表或视图不存在”。
这个问题估计有一定的难度,没有亲历过的就算是高手也难解决,大家有没有
兴趣回答一下,谢谢!
 
你的bus是不是个view? 如果是, 不支持update, delete的.
 
很简单:
If RequestLive is True, but the syntax does not conform to the
requirements, the BDE returns a read-only result set for Paradox or
dBASE, or an error return code for remote servers.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
"我想用Query控件对数据库进行修改" ??
为什么非要用Query?
查询用,修改不用。
 
>the syntax does not conform to the requirements
select * from tablename 符合条件呀???
而且用了tupdatesql了.
 
这个问题我碰得多,你应该加一个用户名,比如:
select * from 用户名.bus
你可以这样试一试,运行Oracle Schema Manager,在Tables下的Demo新建一个
表bus,然后这样:
select * from Demo.bus
试一试看会不会有:“表或视图不存在”。
 
同意fstao的观点,你可能没有怎么对Oracle编过程,试一试就知道了!
 
lee3star君:您好,
使用Query控件操作Qracle数据库是可行的,但是在修改完毕之后必须要进行提交操作(commit),否则,DBMS将不予确认。
 
不过你可以这样试一试,打开WorkSheet,然后输入“select * from bus”,如果
还出现“表或视图不存在”,那你得加个用户名了。
 
这种问题我遇到过,如果将RequestLive色为False就不会出现“表或视图不存在”
,用Table吧(如果记录数不是太多).
 
请你试一试,这里有可能有这样的问题:
1、加入用户名试一下;
2、你是否是用bde建的表,这里表的名字一定要
用大写字母,这种现象我遇到过,我记得就是
表名大小写的问题,在这方面值得一试!
 
这个问题似乎是你的QUERY未指定DataBaseName,Delphi确省寻找本地数据源.
 
这个问题我知道!

在ORACLE中,若想将requestlive设置成TRUE,
其SQL语句必须符合下列条件:
1、语句中的表名和字段名必须全部大写,最好整个语句全大写
2、不能用*代替所有字段,必须老老实实地全部写一遍。
例如:
SELECT A,B,C,... FROM BUS
这样就可以了。
 
我曾经遇到过这类事
你试试:Select * from BUS
"BUS"用大写!!!!!
 
与sql语句无关
请在sql*plus或explorerz中select * from bus(大小写无所谓)
试试,若出错则可能是你用database desktop产生的表,
而且用的小写的名字。可再用database desktop删除此表,
再改用大写的名字重建,或用sql*plus /explorer
create table tablename (filed1 type,field2 type....)
 
1、我原来就是用的Delphi3+Oracle7.3, 现在用Delphi5+Oracle7.3, 这个问题我碰得多,以上各位的回答都不对. 解决的方法很简单:右击TQUERY,调用SQL BUILDER生成SQL语句,拷贝过去试试.我可以得分了吧?

2、可能你的基表有问题,用SQL PLUS访问过吗?

3、你的BDE怎么设置的,没有错误吧?

 
1、lee3star提出的问题是在QUERY中执行的,而且为了能修改,
必须将QUERY.REQUESTLIVE:=TRUE,问题就出在这里。
所以在SQLPLUS中能执行,并不说明可以解决此问题。

2、解决办法就是将所有字段名和表名写成大写,而且若想选择所有字段,
就必须老老实实地将所有字段列出来,而不能用“*”。
这一点,我在本问题的前面回答中就指出了。请看前面我的回答。

3、BlueGenie说的:“右击TQUERY,调用SQL BUILDER生成SQL语句,拷贝过去”
的方法,其实就是我上面提到的方法的一种,因为这样设置的SQL语句一定符合我提出
的条件。但是不必非用SQL BUILDER不可,只要你写的时候注意我提到的条件即可。
若不信的话,BlueGenie可以看看你实现的SQL语句是否确实符合我提出的要求!
 
谢谢这么多的人回答我的问题,但是我请大家注意一点:只要我把REQUESTLIVE属性改为FALSE,那么一切OK。所以我的SQL是没有问题的,大小写也不是问题。希望再得到你们的指教。
 
我到怀疑是BDE的BUG,我遇到同lee3star相同的情况。
REQUESTLIVE属性改为FALSE也可对返回的数据集进行
修改,设为True,就表或视图不存在了
 
后退
顶部