Это не относится к моей области знаний, но я думаю, что эквивалентная функциональность вне ADO будет состоять в том, чтобы получить набор данных в массив, а затем использовать стандартные методы навигации по массиву, а не функциональные возможности, характерные для API баз данных.
Если вы имеете дело с наборами данных, которые достаточно велики, что вы не хотите, чтобы загрузить все это в одно время, вы должны попытаться найти способ, чтобы сузить набор результатов в запросе перед вами начните навигацию по результатам. Например, если вы загрузите набор результатов, а затем перейдете к последней строке, достаточно просто сделать запрос, просто вернув последнюю строку в первую очередь. Если вы обнаружите, что получаете набор результатов, а затем перебираете его (или фильтруете) для определенной строки (или набора строк), я думаю, вы обнаружите, что если Oracle сделает это, вы увидите значительно лучшую производительность.
Причина, по которой вам нужно использовать массивы для такого рода навигации с Oracle, заключается в том, что курсоры Oracle всегда доступны только для пересылки (тогда как с ADO у вас есть динамические, клавишные и статические курсоры). Если вам действительно нужно иметь возможность перемещаться по всему большому набору результатов, загрузка всего объекта в массив - это ваш единственный выбор.
Метод массива будет работать для некоторых из наших меньших наборов данных, но у нас есть некоторые, возможно, большие, которые мне придется выяснить, другой способ справиться с навигацией. – mggates
В основном они выбирают набор записей, а затем проходят его и выполняют действия в каждой строке. Оказывается, им просто нужны эмуляция EOF, BOF и MoveNext. Как я понимаю, Oracle поддерживает динамические курсоры, поскольку 9i, однако интерфейс OCI8 не обновлен для их поддержки. По-прежнему благодаря вашим предложениям и некоторым, которые я нашел на других форумах, у меня есть небольшой класс «RecordSet», который дает мне поведение, которое мне нужно для других программистов. – mggates