Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Перед выполнением инструкции SQL каждый параметр в инструкции SQL должен быть связан или привязан к переменной в приложении. Когда приложение привязывает переменную к параметру, она описывает, что переменная — адрес, тип данных C и т. д. — драйверу. Он также описывает сам параметр — тип данных SQL, точность и т. д. Драйвер сохраняет эти сведения в структуре, которая хранится для этой инструкции, и использует сведения для получения значения из переменной при выполнении инструкции.
Параметры могут быть привязаны или повторно привязаны в любое время до выполнения инструкции. Если параметр повторно привязывается после выполнения оператора, эта привязка не вступает в силу до тех пор, пока оператор не будет выполнен снова. Чтобы привязать параметр к другой переменной, приложение просто повторно привязывает параметр с новой переменной; Предыдущая привязка автоматически освобождается.
Переменная остается привязанной к параметру, пока другая переменная не привязана к параметру, пока все параметры не будут отключены путем вызова SQLFreeStmt с параметром SQL_RESET_PARAMS или до тех пор, пока инструкция не будет освобождена. По этой причине приложение должно гарантировать, что переменные не освобождаются до тех пор, пока не будут отвязаны. Дополнительные сведения см. в разделе "Выделение и освобождение буферов".
Так как привязки параметров — это только сведения, хранящиеся в структуре, поддерживаемой драйвером инструкции, они могут быть заданы в любом порядке. Они также не зависят от выполняемой инструкции SQL. Например, предположим, что приложение привязывает три параметра, а затем выполняет следующую инструкцию SQL:
INSERT INTO Parts (PartID, Description, Price) VALUES (?, ?, ?)
Если приложение немедленно выполняет инструкцию SQL
SELECT * FROM Orders WHERE OrderID = ?, OpenDate = ?, Status = ?
в том же дескрипторе инструкции используются привязки параметров для INSERT инструкции, так как они являются привязками, хранящимися в структуре инструкции. В большинстве случаев это плохая практика программирования и следует избежать. Вместо этого приложение должно вызывать SQLFreeStmt с параметром SQL_RESET_PARAMS, чтобы отменить привязку всех старых параметров, а затем привязать новые.
Этот раздел содержит следующие подразделы.