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

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

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

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

Вызов функции SQLSetStmtAttr со значением SQL_ATTR_QUERY_TIMEOUT параметра fOption определяет интервал истечения времени ожидания запроса, которое позволяет защитить сервер и пользователя от долго выполняющихся запросов.

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

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

См. также

Основные понятия

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