Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Драйвер ODBC для собственного клиента SQL Server, когда соединен с экземпляром SQL Server, поддерживает способы оптимизации производительности однопроходных курсоров только для чтения. Быстрые однопроходные курсоры реализуются драйвером и сервером внутренне, при этом способ реализации очень похож на результирующие наборы по умолчанию. Кроме того, имея высокую производительность, быстрые однопроходные курсоры обладают следующими характеристиками.
Функция SQLGetData не поддерживается. Столбцы результирующего набора должны быть привязаны к переменным программы.
Когда сервер достигает конца курсора, он автоматически закрывает курсор. Тем не менее приложение должно вызвать функцию SQLCloseCursor или SQLFreeStmt(SQL_CLOSE), но драйверу не придется отправлять серверу запрос на закрытие. Это экономит обращение через сеть к серверу.
Приложение запрашивает быстрые однопроходные курсоры при помощи атрибута инструкции SQL_SOPT_SS_CURSOR_OPTIONS, зависящего от драйвера. При установке значения SQL_CO_FFO быстрые однопроходные курсоры разрешаются без автоматической выборки. При установке значения SQL_CO_FFO_AF включен параметр автоматической выборки. Дополнительные сведения об автоматической выборке см. в разделе Использование автоматической выборки с курсорами ODBC.
Быстрые однопроходные курсоры с автоматической выборкой можно использовать для получения небольшого результирующего набора с однократным обращением к серверу. В описании этих шагов n является возвращаемым количеством строк.
Установите для атрибута SQL_SOPT_SS_CURSOR_OPTIONS значение SQL_CO_FFO_AF.
Установите для атрибута SQL_ATTR_ROW_ARRAY_SIZE значение n + 1.
Свяжите столбцы результата с массивами из n + 1 элементов (для гарантии безопасности, если будет фактически выбрана строка n + 1).
Откройте курсор при помощи либо функции SQLExecDirect, либо функции SQLExecute.
Если возвращается состояние SQL_SUCCESS, вызовите затем функцию SQLFreeStmt или SQLCloseCursor, чтобы закрыть курсор. Все данные для строк будут находиться в связанных программных переменных.
Выполняя эти шаги, функция SQLExecDirect или SQLExecute отправляет запрос на открытие курсора с включенным параметром автоматической выборки. В ответ на этот отдельный запрос от клиента сервер:
Открывает курсор.
Строит результирующий набор и отправляет строки клиенту.
Так как размер набора строк был установлен в значение на 1 большее, чем число строк результирующего набора, сервер определяет конец курсора и закрывает его.