Использование параметров инструкции — привязка параметров
Применимо к: SQL Server Azure SQL DatabaseУправляемый экземпляр SQL AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)
Каждый маркер параметра в инструкции SQL должен быть сопоставлен переменной в приложении (привязан к ней), прежде чем можно выполнить инструкцию. Для этого вызывается функция SQLBindParameter . SQLBindParameter описывает переменную программы (адрес, тип данных C и т. д.) для драйвера. Она также определяет маркер параметра, указывая его порядковое значение, а затем описывая характеристики представляемого им объекта SQL (тип данных SQL, точность и т. д.).
Маркеры параметров могут быть привязаны или повторно привязаны в любое время перед выполнением инструкции. Привязка параметра действует до тех пор, пока не происходит одно из следующих событий.
Вызов SQLFreeStmt с параметром Option , равным SQL_RESET_PARAMS, освобождает все параметры, привязанные к дескриптору инструкции.
Вызов SQLBindParameter с параметром ParameterNumber , установленным в порядковый номер маркера привязанного параметра, автоматически освобождает предыдущую привязку.
Приложение также может привязать параметры к массивам переменных программы для пакетной обработки инструкции SQL. Существует два типа привязки массивов.
Привязка на уровне столбца выполняется, если каждый отдельный параметр привязан к собственному массиву переменных.
Привязка на уровне столбцов определяется путем вызова SQLSetStmtAttrс атрибутом SQL_ATTR_PARAM_BIND_TYPE и значением ValuePtr , равным SQL_PARAM_BIND_BY_COLUMN.
Привязка на уровне строки выполняется, если все параметры в инструкции SQL привязаны в виде блока к массиву структур, которые содержат отдельные переменные для параметров.
Привязка на уровне строк задается путем вызова SQLSetStmtAttrс атрибутом SQL_ATTR_PARAM_BIND_TYPE и значением ValuePtr , равным размеру структуры, включающей переменные программы.
Когда драйвер ODBC SQL Server Native Client отправляет на сервер символьные или двоичные строковые параметры, он заполняет значения длиной, указанной в параметре SQLBindParameterColumnSize. Если приложение ODBC 2.x указывает 0 для ColumnSize, драйвер заполняет значение параметра точностью типа данных. Точность равна 8000 при подключении к серверам SQL Server, 255 — при подключении к предыдущим версиям SQL Server. ColumnSize имеет значение в байтах для столбцов variant.
SQL Server поддерживает определение имен для параметров хранимых процедур. В ODBC 3.5 также появилась поддержка именованных параметров, используемых при вызове хранимых процедур SQL Server. Эта поддержка может использоваться для следующих действий.
Вызов хранимой процедуры и предоставление значений для подмножества параметров, заданных для хранимой процедуры.
Указание параметров в приложении не в той последовательности, в какой они были заданы при создании хранимой процедуры.
Именованные параметры поддерживаются только при использовании инструкции Transact-SQL EXECUTE или escape-последовательности ODBC CALL для выполнения хранимой процедуры.
Если SQL_DESC_NAME задано для параметра хранимой процедуры, все параметры хранимой процедуры в запросе также должны задавать SQL_DESC_NAME. Если литералы используются в вызовах хранимых процедур, где параметры SQL_DESC_NAME заданы, литералы должны использовать формат "name=value", где name — это имя параметра хранимой процедуры (например, @p1). Дополнительные сведения см. в разделе Привязка параметров по имени (именованные параметры).
См. также:
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по