Поделиться через


Использование блочных курсоров через 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, обозначающий позицию выборки в наборе записей.