Использование блочных курсоров через API
Серверные курсоры при обращении к ним через API не ограничены получением одной строки за один раз, они могут при каждой выборке получать несколько строк. При работе с базой данных типа Microsoft SQL Server в режиме клиент-сервер значительно эффективнее извлекать несколько строк за один раз. Количество строк, получаемых за одну выборку, называется размером набора строк. Курсоры, имеющие размер набора строк более 1, называются блочными курсорами. В поддерживаемых API блочные курсоры можно использовать следующим образом:
ODBC
Установите атрибут инструкции SQL_ATTR_ROWSET_SIZE равным размеру набора строк.
Чтобы привязать столбцы к массивам переменных, в которых будут храниться данные возвращенных строк, пользуйтесь привязками на уровне столбца или строки. Число элементов в каждом массиве равно размеру набора строк.
Каждый вызов SQLFetchScroll получает количество строк, заданное в атрибуте SQL_ATTR_ROWSET_SIZE.
OLE DB
Выделите массив дескрипторов строк и привяжите столбцы, представляемые каждым из дескрипторов, к массиву переменных, в которых будут храниться данные этих столбцов.
Вызовите метод IRowset::GetNextRows с параметром cRows, имеющим значение числа строк в массиве дескрипторов строк, и адресом массива дескрипторов строк в параметре prghRows.
ADO
Определите переменную типа variant, где будут храниться данные строк, которые нужно получить.
При необходимости позиционирование курсора производится с помощью методов набора записей Move, MoveFirst, MoveLast, MoveNext и MovePrevious.
Вызовите метод набора записей GetRows с параметром array, содержащим адрес переменной типа variant, в которой будут сохранены данные строк, и с параметром Crows, содержащим число возвращаемых строк. При необходимости указывайте параметр Start, обозначающий позицию выборки в наборе записей.