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

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics даПараллельное хранилище данныхParallel Data WarehouseyesПараллельное хранилище данныхParallel Data WarehouseПрименимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics даПараллельное хранилище данныхParallel Data WarehouseyesПараллельное хранилище данныхParallel Data Warehouse

Прежде чем приложение сможет выполнить инструкцию, оно должно выделить дескриптор инструкции.Before an application can execute a statement, it must allocate a statement handle. Для этого вызывается функцию SQLAllocHandle с параметром параметром handletype , для которого задано значение SQL_HANDLE_STMT и инпусандле указывает на маркер подключения.It does this by calling SQLAllocHandle with the HandleType parameter set to SQL_HANDLE_STMT and InputHandle pointing to a connection handle.

Атрибуты инструкции представляют собой характеристики дескриптора инструкции.Statement attributes are characteristics of the statement handle. Атрибуты образца инструкции могут включать закладки и курсор для использования с результирующим набором инструкции.Sample statement attributes can include using bookmarks and the kind of cursor to use with the statement's result set. Атрибуты инструкции задаются с помощью SQLSetStmtAttr, а их текущие параметры извлекаются с использованием SQLGetStmtAttr.Statement attributes are set with SQLSetStmtAttr, and their current settings are retrieved by using SQLGetStmtAttr. Приложению не обязательно устанавливать атрибуты инструкции, все они имеют значения по умолчанию, а некоторые зависят от драйвера.There is no requirement that an application set any statement attributes; all statement attributes have defaults, and some are driver specific.

При использовании некоторых инструкций ODBC и параметров соединения следует соблюдать осторожность.Use caution in the use of several ODBC statement and connection options. Вызов SQLSetConnectAttr с параметром fOption , установленным в значение SQL_ATTR_LOGIN_TIMEOUT, определяет время ожидания приложения при попытке соединения, при ожидании установления соединения (0 указывает бесконечное время ожидания).Calling SQLSetConnectAttr with fOption set to SQL_ATTR_LOGIN_TIMEOUT controls the time that an application waits for a connection attempt to time-out while waiting to establish a connection (0 specifies an infinite wait). Сайты с низким временем ответа могут задать большее значение, чтобы дать приложению достаточно времени для установления соединения.Sites that have slow response times can set this value high to make sure that connections have sufficient time to be completed. Тем не менее этот интервал должен быть достаточно низким, чтобы дать пользователю ответ в том случае, если драйвер не может установить соединение.However, the interval should always be low enough to give the user a response in a reasonable time if the driver cannot connect.

Вызов SQLSetStmtAttr с параметром fOption , установленным в значение SQL_ATTR_QUERY_TIMEOUT задает интервал времени ожидания запроса для защиты сервера и пользователя от длительных запросов.Calling SQLSetStmtAttr with fOption set to SQL_ATTR_QUERY_TIMEOUT sets a query time-out interval to help protect the server and the user from long-running queries.

Вызов SQLSetStmtAttr с параметром fOption , для которого задано значение SQL_ATTR_MAX_LENGTH ограничивает объем данных текста и изображений , которые может получить отдельная инструкция.Calling SQLSetStmtAttr with fOption set to SQL_ATTR_MAX_LENGTH limits the amount of text and image data that an individual statement can retrieve. Вызов SQLSetStmtAttr с параметром fOption , установленным в SQL_ATTR_MAX_ROWS, также ограничивает набор строк первыми n строками, если это требуется для всего приложения.Calling SQLSetStmtAttr with fOption set to SQL_ATTR_MAX_ROWS also limits a rowset to the first n rows if that is all the application requires. Обратите внимание, что по значению SQL_ATTR_MAX_ROWS драйвер выполняет инструкцию SET ROWCOUNT на сервере.Note that setting SQL_ATTR_MAX_ROWS causes the driver to issue a SET ROWCOUNT statement to the server. Это влияет на все MicrosoftMicrosoft SQL ServerSQL Server инструкции, включая триггеры и обновления.This affects all MicrosoftMicrosoft SQL ServerSQL Server statements, including triggers and updates.

Соблюдайте осторожность при установке этих параметров.Use caution when you are setting these options. Лучше, если все дескрипторы инструкций в дескрипторе соединения будут иметь одинаковые значения SQL_ATTR_MAX_LENGTH и SQL_ATTR_MAX_ROWS.It is best if all statement handles on a connection handle have the same settings for SQL_ATTR_MAX_LENGTH and SQL_ATTR_MAX_ROWS. Если драйвер переключается с одного дескриптора инструкции на другой с разными значениями этих параметров, то он должен для изменения значений формировать соответствующие инструкции SET TEXTSIZE и SET ROWCOUNT.If the driver switches from a statement handle to another with different values for these options, the driver must generate the appropriate SET TEXTSIZE and SET ROWCOUNT statements to change the settings. Драйвер не может поместить эти инструкции в один пакет как пользовательские инструкции SQL, поскольку пользовательские инструкции SQL могут содержать инструкцию, которая должна быть первой в пакете.The driver cannot put these statements in the same batch as the user SQL statement because the user SQL statement can contain a statement that must be the first statement in a batch. Драйвер должен отправлять инструкции SET TEXTSIZE и SET ROWCOUNT в отдельных пакетах, что приводит к появлению дополнительного обращения к серверу.The driver must send the SET TEXTSIZE and SET ROWCOUNT statements in a separate batch, which automatically generates an additional roundtrip to the server.

См. также:See Also

Выполняя запросы (ODBC)Executing Queries (ODBC)