Есть ли замены OCI8 для ADO MoveFirst и Eof, Bof?
-
15-09-2020 - |
Вопрос
Я исследую возможность портирования приложения, написанного в Classic Asp с наборами записи ADO и базой данных Oracle на PHP5 и OCI8.У нас много сохраненных процедур и запросов с переменными связывания для производительности.
Моя проблема заключается в том, что мы стали ленивыми от использования классов ADO и индикаторы EOF и BOF вместе с MoveFirst, MOVENEXT и READPRUVE.
Я не могу найти никаких подобных функций в модуле OCI.Есть ли надежда?
Решение
Это за пределами моей области экспертизы, но я думаю, что эквивалентная функциональность вне ADO будет для получения набора данных в массив, затем использовать стандартные методы навигации на навигации, а не функциональность, специфичные для API базы данных. .
Если вы имеете дело с наборами набора данных, которые достаточно велики, которые вы не хотите загружать все это за один раз, вы должны попытаться найти способ сужать набор результатов в запросе, прежде чем начать навешивать результаты Отказ Например, если вы обнаружите, что загружаете набор результатов, а затем просто перейти в последний ряд, достаточно легко сделать запрос просто вернуть последнюю строку в первую очередь. Если вы обнаружите, что извлекаете набор результатов, то зацикливайтесь через него (или фильтрацию) для определенной строки (или набора строк), я думаю, вы обнаружите, что позволяет Oracle сделать это для вас, пока вы покажете значительно лучшую производительность.
Причина, по которой вам нужно использовать массивы, чтобы сделать этот вид навигации с Oracle, состоит в том, что курсоры Oracle всегда являются только вперед-лишь (тогда как с ADO у вас также есть динамический, кейс и статические курсоры). Если вам действительно нужно иметь возможность перемещаться по целую большой набор результатов, загрузка всей вещи в массив - это только ваш выбор.