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


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

Прежде чем приложение сможет выполнить инструкцию, оно должно выделить дескриптор инструкции. Это делается с помощью вызова функции 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 на сервере. Это влияет на все инструкции MicrosoftSQL Server, включая триггеры и обновления.

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

См. также

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