OracleDataAdapter速度很慢,但oracle连接工并不慢

zheninchangjiang 2010-09-05 03:52:53
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); --在此处长时间没有响应,报操作超时错误
...全文
323 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zheninchangjiang 2010-09-06
  • 打赏
  • 举报
回复
odp.net和oracleClient都能出结果的,只是等待时间非常的长,语法肯定是受支持的,还有其他方面的原因吗?
zheninchangjiang 2010-09-06
  • 打赏
  • 举报
回复
UP一下,等待高手解决,我的看法是两个connect by的问题,一个没有问题,速度挺快的
sql5186 2010-09-06
  • 打赏
  • 举报
回复
请楼主将你SQL中的
connect by .......start with

类似这种语法换成SQL标准语法,可以吗?
不行的话就把逻辑写到代码里
估计是这个问题
jimh 2010-09-06
  • 打赏
  • 举报
回复
应该是驱动对这种语法不支持,你试试使用标准sql看看
zheninchangjiang 2010-09-06
  • 打赏
  • 举报
回复
oracn.Open();是没有问题的,
没有写成存储过程;
已经换用驱动程序了,odbc/odp.net都用过了,odbc,直接没有结果而返回,两秒内,
odp.net跟data.oracleclient一样没有响应
捷哥1999 2010-09-05
  • 打赏
  • 举报
回复
1、你把那个写成存储过程了吗?那段pl/sql代码是否编译成oracle的存储过程了?
2、你在C#中调用的时候,是否没有指定是调用一个存储过程
oracmd.CommandType=CommandType.StoredProcedure;
sammer110 2010-09-05
  • 打赏
  • 举报
回复
加上TRY catch
分析下
我估计多半是连接字符串那里有问题
zheninchangjiang 2010-09-05
  • 打赏
  • 举报
回复
程序中的 代码没错,这里面是我手输入的,少了点东西,
1-oracn
2-_cn=连接字符串,这个是没有问题的,因为其他使用此连接字符串的功能都正常
3-少了分号
不要介意这么多,我只是奇怪,为什么会这么慢以致超时

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧