C#+oracle,使用System.Data.OracleClient提供程序,
查询代码如下:with aa as (select dvid from
(select dvid,level as llevel
from vw_x_dvlist
connect by dvpid=prior dvid
start with invname like '%汽%'
) a
group by dvid having sum(llevel)=1)
select b.*,level as llevel from dm_dvfile b
connect by b.dvpid=prior b.dvid
start with dvid in (
select dvid from aa
);在Sql developer中执行不到两秒的时间,总数据量为560条
如果在C#程序中执行此程序,会报操作超时错误
代码片断如下: OracleConnection=New OracleConnection(_cn);
OracleCommand oracmd=new Oraclecommand();
oracmd.Connection=oracn;
OracleDataAdapter orada=new OracleDataAdapter(oracmd);
DataSet ds=new DataSet();
oracmd.Commandtext="上述SQL脚本"
orada.Fill(ds); --在此处长时间没有响应,报操作超时错误
查询代码如下:with aa as (select dvid from
(select dvid,level as llevel
from vw_x_dvlist
connect by dvpid=prior dvid
start with invname like '%汽%'
) a
group by dvid having sum(llevel)=1)
select b.*,level as llevel from dm_dvfile b
connect by b.dvpid=prior b.dvid
start with dvid in (
select dvid from aa
);在Sql developer中执行不到两秒的时间,总数据量为560条
如果在C#程序中执行此程序,会报操作超时错误
代码片断如下: OracleConnection=New OracleConnection(_cn);
OracleCommand oracmd=new Oraclecommand();
oracmd.Connection=oracn;
OracleDataAdapter orada=new OracleDataAdapter(oracmd);
DataSet ds=new DataSet();
oracmd.Commandtext="上述SQL脚本"
orada.Fill(ds); --在此处长时间没有响应,报操作超时错误
1-oracn
2-_cn=连接字符串,这个是没有问题的,因为其他使用此连接字符串的功能都正常
3-少了分号
不要介意这么多,我只是奇怪,为什么会这么慢以致超时
分析下
我估计多半是连接字符串那里有问题
2、你在C#中调用的时候,是否没有指定是调用一个存储过程
oracmd.CommandType=CommandType.StoredProcedure;
没有写成存储过程;
已经换用驱动程序了,odbc/odp.net都用过了,odbc,直接没有结果而返回,两秒内,
odp.net跟data.oracleclient一样没有响应
connect by .......start with类似这种语法换成SQL标准语法,可以吗?
不行的话就把逻辑写到代码里
估计是这个问题