2010-07-15 98 views
1

我正在研究将使用ADO记录集和Oracle数据库以传统ASP编写的应用程序移植到PHP5和OCI8的可能性。我们有大量的存储过程和查询绑定变量的性能。是否有用于ADO MoveFirst和EOF,BOF的OCI8替代品?

我的问题是,我们已经从使用ADO类,EOF和BOF指标以及MoveFirst,MoveNext和MovePrevious变得懒惰。

我在OCI模块中找不到任何类似的功能。有没有希望?

回答

0

这不在我的专业领域,但我认为ADO之外的等价功能是将数据集检索到数组中,然后使用标准数组导航技术,而不是数据库API特有的功能。


如果你正在处理的足够大,你不希望加载整个事情在同一时间的数据集,你应该尝试找到一种方法来缩小结果你之前在查询中设置开始浏览结果。例如,如果您发现自己正在加载结果集,那么只要到最后一行,就很容易让查询返回最后一行。如果您发现自己检索了一个结果集,然后对特定行(或一组行)进行循环(或过滤),我想您会发现让Oracle为您做这件事将会显示出更好的性能。

您需要使用数组与Oracle进行此类导航的原因是,Oracle游标始终是仅向前的(而使用ADO的同时也有动态,键集和静态游标)。如果您确实需要能够浏览整个大型结果集,则将整个内容加载到数组中是您唯一的选择。

+0

数组方法适用于我们的一些较小的数据集,但我们确实有一些可能的大数据集,我将不得不找出处理导航的另一种方法。 – mggates 2010-07-15 18:18:11

+0

他们大多选择记录集,然后通过它并在每行上执行操作。原来他们只需要EOF,BOF和MoveNext仿真。 据我了解,自9i以来,Oracle支持动态游标,但OCI8接口尚未更新以支持它们。 仍然要感谢你的建议,以及我在其他论坛上发现的一些建议,我有一个小的'RecordSet'类,它为我提供了其他程序员所需的行为。 – mggates 2010-07-19 18:54:37