Выделение дескриптора инструкций

Перед выполнением инструкции приложение должно выделить дескриптор инструкции. Это делается путем вызова SQLAllocHandle с параметром HandleType , равным SQL_HANDLE_STMT и InputHandle , указывающим на дескриптор подключения.

Атрибуты инструкции — это характеристики дескриптора инструкции. Атрибуты примера инструкции могут включать использование закладок и типа курсора для использования с результирующий набор инструкции. Атрибуты инструкции задаются с помощью SQLSetStmtAttr, а текущие параметры извлекаются с помощью SQLGetStmtAttr. Не требуется, чтобы приложение установило какие-либо атрибуты инструкции; Все атрибуты инструкции имеют значения по умолчанию, а некоторые — драйвером.

Используйте осторожность в использовании нескольких инструкций ODBC и параметров подключения. Вызов SQLSetConnectAttr с параметром fOption , заданным для SQL_ATTR_LOGIN_TIMEOUT, определяет время ожидания ожидания подключения при ожидании установки подключения (0 указывает бесконечное ожидание). Сайты с медленным временем отклика могут задать это значение высоко, чтобы убедиться, что подключения имеют достаточно времени для завершения. Однако интервал всегда должен быть достаточно низким, чтобы предоставить пользователю ответ в разумное время, если драйвер не может подключиться.

Вызов SQLSetStmtAttr с набором fOption для SQL_ATTR_QUERY_TIMEOUT задает интервал времени ожидания запроса для защиты сервера и пользователя от длительных запросов.

Вызов SQLSetStmtAttr с набором fOption для SQL_ATTR_MAX_LENGTH ограничивает объем текстовых и графических данных, которые может извлекать отдельная инструкция. Вызов SQLSetStmtAttr с набором fOption для SQL_ATTR_MAX_ROWS также ограничивает набор строк первым n строкам, если это все приложение требуется. Обратите внимание, что параметр SQL_ATTR_MAX_ROWS приводит к тому, что драйвер выдает инструкцию SET ROWCOUNT на сервер. Это влияет на все инструкции Microsoft SQL Server, включая триггеры и обновления.

Используйте осторожность при настройке этих параметров. Лучше всего, если все дескрипторы инструкций в дескрипторе подключения имеют одинаковые параметры для SQL_ATTR_MAX_LENGTH и SQL_ATTR_MAX_ROWS. Если драйвер переключается с дескриптора инструкции на другой с разными значениями для этих параметров, драйвер должен создать соответствующие инструкции SETTEXTIZE и SET ROWCOUNT, чтобы изменить параметры. Драйвер не может поместить эти инструкции в тот же пакет, что и инструкция SQL пользователя, так как пользовательская инструкция SQL может содержать инструкцию, которая должна быть первой инструкцией в пакете. Драйвер должен отправлять инструкции SET TEXTSIZE и SET ROWCOUNT в отдельном пакете, который автоматически создает дополнительный обход на сервер.

См. также

Выполнение запросов (ODBC)