Php ADO MoveFirst和EOF、BOF是否有OCI8替代品?

Php ADO MoveFirst和EOF、BOF是否有OCI8替代品?,php,oracle,asp-classic,ado,oci8,Php,Oracle,Asp Classic,Ado,Oci8,我正在研究将一个用经典ASP编写的应用程序、ADO记录集和Oracle数据库移植到PHP5和OCI8的可能性。为了提高性能,我们有很多带有绑定变量的存储过程和查询 我的问题是,由于使用ADO类、EOF和BOF指示器以及MoveFirst、MoveNext和MovePrevious,我们变得懒惰了 我在OCI模块中找不到任何类似的功能。还有希望吗?这超出了我的专业范围,但我认为ADO之外的等效功能是将数据集检索到数组中,然后使用标准数组导航技术,而不是特定于数据库API的功能 如果处理的数据集足

我正在研究将一个用经典ASP编写的应用程序、ADO记录集和Oracle数据库移植到PHP5和OCI8的可能性。为了提高性能,我们有很多带有绑定变量的存储过程和查询

我的问题是,由于使用ADO类、EOF和BOF指示器以及MoveFirst、MoveNext和MovePrevious,我们变得懒惰了


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

这超出了我的专业范围,但我认为ADO之外的等效功能是将数据集检索到数组中,然后使用标准数组导航技术,而不是特定于数据库API的功能


如果处理的数据集足够大,不希望一次加载整个数据集,那么在开始导航结果之前,应该尝试找到一种方法来缩小查询中的结果集。例如,如果您发现自己正在加载一个结果集,然后只转到最后一行,那么很容易让查询首先返回最后一行。如果您发现自己正在检索一个结果集,然后在其中循环(或筛选)特定行(或一组行),我想您会发现,让Oracle为您这样做将显示出显著更好的性能


需要使用数组在Oracle中执行此类导航的原因是Oracle游标始终是只向前的(而使用ADO时,还可以使用动态游标、键集游标和静态游标)。如果您确实需要能够浏览整个大型结果集,那么将整个结果加载到数组中是您唯一的选择。

数组方法适用于我们的一些较小的数据集,但是我们确实有一些可能比较大的记录,我将不得不找出另一种处理导航的方法。大多数情况下,它们是选择记录集,然后遍历它,并对每一行执行操作。结果证明他们只需要EOF、BOF和MoveNext仿真。据我所知,自9i以来,Oracle支持动态游标,但OCI8接口尚未更新以支持它们。还是要感谢你的建议和我在其他论坛上找到的一些建议,我有一个小的“RecordSet”类,它为我提供了其他程序员所需要的行为。