Привязка параметров

Каждый маркер параметра в инструкции SQL должен быть ассоциирован, или привязан, к переменной в приложении, прежде чем можно выполнить инструкцию. Это делается с помощью вызова функции SQLBindParameter. SQLBindParameter описывает программную переменную (адрес, тип данных языка C и т.д.) для драйвера. Он также определяет маркер параметра, указывая его порядковое значение, а затем описывая характеристики представляемого им объекта SQL (тип данных SQL, точность и т.д.).

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

  • Вызов функции SQLFreeStmt с параметром Option, установленным в значение SQL_RESET_PARAMS, освобождает все параметры, привязанные к дескриптору инструкции.

  • Вызов функции SQLBindParameter с ParameterNumber, установленным на порядковый номер маркера параметра, автоматически отменяет предыдущую привязку.

Приложение также может привязать параметры к массивам программных переменных для пакетной обработки инструкции SQL. Существует два типа привязки массивов:

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

    Привязка на уровне столбца указывается путем вызова функции SQLSetStmtAttr с параметром Attribute, установленным в значение SQL_ATTR_PARAM_BIND_TYPE, и параметром ValuePtr, установленным в значение SQL_PARAM_BIND_BY_COLUMN.

  • Привязка на уровне строки выполняется, когда все параметры в инструкции SQL привязаны в виде блока к массиву структур, которые содержат отдельные переменные для параметров.

    Привязка на уровне строки задается путем вызова функции SQLSetStmtAttr с параметром Attribute, установленным в значение SQL_ATTR_PARAM_BIND_TYPE, и параметром ValuePtr, установленным равным размеру структуры, содержащей программные переменные.

Если поставщик OLE DB для собственного клиента SQL Server отправляет на сервер символьные или двоичные строковые параметры, дополняет значения до длины, указанной в параметре SQLBindParameter ColumnSize. Если в приложении ODBC 2.x указано значение ColumnSize, равное 0, драйвер дополняет значение параметра до точности типа данных. Точность равна 8000 при подключении к серверам SQL Server, 255 при подключении к предыдущим версиям SQL Server. ColumnSize приводится в байтах для столбца с типом данных variant.

SQL Server поддерживает определение имен для хранимых процедур. В ODBC 3.5 также появилась поддержка именованных параметров, используемых при вызове хранимых процедур SQL Server. Эта поддержка может использоваться для:

  • Вызова хранимой процедуры и предоставления значений для подмножества параметров, определенных для хранимой процедуры.

  • Указания в приложении параметров в порядке, отличном от порядка, указанного при создании хранимой процедуры.

Именованные параметры поддерживаются только при использовании инструкции EXECUTE Transact-SQL или управляющей последовательности ODBC CALL для выполнения хранимой процедуры.

См. также

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