请教一个关于odac的问题(100分)(100分)

T

t123

Unregistered / Unconfirmed
GUEST, unregistred user!

一个比较复杂的sql语句,在pl/sql下执行正常,可是在程序中,用odac的query执行,不出结果。
具体如下:
sql类似这样:
select a.a1,b.a1,c.a1.d.a1
from t0,
(select d_code,a1 from t1 where d_code=:v_code) a,
(select d_code,a1 from t2 where d_code=:v_code) b,
(select d_code,a1 from t3 where d_code=:v_code) c,
(select d_code,a1 from t4 where d_code=:v_code) d
where t0.d_code=t1.d_code(+)
and t0.d_code=t2.d_code(+)
and t0.d_code=t3.d_code(+)
and t0.d_code=t4.d_code(+)

环境:delphi6+oracle7.3.2+10M光纤城域网
问题:这个sql在pl/sql下执行正常,耗时1秒,可在delphi6+odac的query中执行不出结果,一直等待,如果将变量:v_code换成定值,可以执行出结果,但耗时增加一倍要2秒

据我所知好像pl/sql developer原理与doa控件一样,是不是odac在这方面有bug?但是doa控件使用时,客户端必须装sql*net,不能像odac一样直连,大家又没有什么好办法?
 
看看这个,如:

const
sql = 'select * from %s order by %s';

query.sql := Format(sql, ['yourTableName', 'YourFieldName']);
 
我知道这样做可以,但是我还是想使用传参数的方法,我主要是想知道为什么!
 
ODAC里面有一个SQL Monitor,看看传出去的SQL语句是不是正确。
 
sql 在plsql developer种执行没错。
 
从SQL Monitor里粘贴的SQL语句正确吗?如果没问题的话,那么可能是和登陆的用户有关,
PL/SQL中和ODAC中是否使用不同的用户?
 
新下载了ODAC,但在DELPHI6中无法安装,请指教!!
 
安装方法:
打开source/delphi6下的.bpg文件,按"build all projects",再选中两个以dcl开头的
project,按“install”,最后设定library目录,加入source/delphi6即可。
另外,目录名应该改为DBAccess。
 
顶部