Вопрос

Я исследую возможность портирования приложения, написанного в Classic Asp с наборами записи ADO и базой данных Oracle на PHP5 и OCI8.У нас много сохраненных процедур и запросов с переменными связывания для производительности.

Моя проблема заключается в том, что мы стали ленивыми от использования классов ADO и индикаторы EOF и BOF вместе с MoveFirst, MOVENEXT и READPRUVE.

Я не могу найти никаких подобных функций в модуле OCI.Есть ли надежда?

Это было полезно?

Решение

Это за пределами моей области экспертизы, но я думаю, что эквивалентная функциональность вне ADO будет для получения набора данных в массив, затем использовать стандартные методы навигации на навигации, а не функциональность, специфичные для API базы данных. .


Если вы имеете дело с наборами набора данных, которые достаточно велики, которые вы не хотите загружать все это за один раз, вы должны попытаться найти способ сужать набор результатов в запросе, прежде чем начать навешивать результаты Отказ Например, если вы обнаружите, что загружаете набор результатов, а затем просто перейти в последний ряд, достаточно легко сделать запрос просто вернуть последнюю строку в первую очередь. Если вы обнаружите, что извлекаете набор результатов, то зацикливайтесь через него (или фильтрацию) для определенной строки (или набора строк), я думаю, вы обнаружите, что позволяет Oracle сделать это для вас, пока вы покажете значительно лучшую производительность.

Причина, по которой вам нужно использовать массивы, чтобы сделать этот вид навигации с Oracle, состоит в том, что курсоры Oracle всегда являются только вперед-лишь (тогда как с ADO у вас также есть динамический, кейс и статические курсоры). Если вам действительно нужно иметь возможность перемещаться по целую большой набор результатов, загрузка всей вещи в массив - это только ваш выбор.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top