Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# PL\SQL和ODP,使用DataReader从RefCursor中读取_C#_Plsql_Odp.net - Fatal编程技术网

C# PL\SQL和ODP,使用DataReader从RefCursor中读取

C# PL\SQL和ODP,使用DataReader从RefCursor中读取,c#,plsql,odp.net,C#,Plsql,Odp.net,我编写了一个PL\SQL函数,而不是一个REF游标 OPEN REFCURSOR FOR SELECT bla bla bla.. 我把它打开,这样我就可以在ODP程序中读取它了 在C端,我作为IDataReader从命令中获得结果 问题是程序一直在等待所有数据首先生成,然后我就可以开始从DataReader读取数据了。 我从这个功能中获得了大量数据,而我不得不等待第一个结果的出现这一事实让我感到困扰 如果我从一个函数中取出这个select查询并将其放在一个DataReader上,那么一切都正

我编写了一个PL\SQL函数,而不是一个REF游标

OPEN REFCURSOR FOR
SELECT bla bla bla..
我把它打开,这样我就可以在ODP程序中读取它了

在C端,我作为IDataReader从命令中获得结果

问题是程序一直在等待所有数据首先生成,然后我就可以开始从DataReader读取数据了。 我从这个功能中获得了大量数据,而我不得不等待第一个结果的出现这一事实让我感到困扰

如果我从一个函数中取出这个select查询并将其放在一个DataReader上,那么一切都正常工作


谢谢

您是在询问存储过程的性能还是ado.net的性能优化?目前,听起来您的查询速度很慢。如果Oracle开始发送数据包需要10秒钟,那么DataReader将阻塞10秒钟,然后才能读取第一行。如果我没有说清楚的话。我将查询放在常规命令上,然后使用DataReader从中读取,第一个结果立即出现,但使用sored proc,它使它首先加载所有结果,然后将第一个结果重新发布到DataReader。这不是一个很好的解决方案,所以我想要一个解决方案,在存储过程中放置一个查询,并立即获得第一个结果显示一些代码-特别是足以看到PLSQL是否返回多个结果集,以及足以看到ADO.NET代码的通用策略。我在代码中没有做任何特殊的事情。。只需ExecuteReader命令并读取它所读取的结果即可。。如果我调试它,我可以看到它在大约30秒内被卡在读取行上,我猜这是因为存储过程强制查询首先加载所有行,然后再将其发送到DataReader。尝试使用OracleDataReader.Fetchsize值来查看是否可以获得更好的性能。