Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Чтобы задать значение параметра, приложение просто задает значение переменной, привязанной к параметру. Не важно, если задано это значение, если он установлен перед выполнением инструкции. Приложение может задать значение до или после привязки переменной, и оно может изменить значение столько раз, сколько он хочет. При выполнении инструкции драйвер просто извлекает текущее значение переменной. Это особенно полезно при выполнении подготовленной инструкции более одного раза; приложение задает новые значения для некоторых или всех переменных при каждом выполнении инструкции. Пример этого см . в разделе "Подготовленное выполнение" ранее в этом разделе.
Если буфер длины или индикатора привязан к вызову SQLBindParameter, перед выполнением инструкции необходимо задать одно из следующих значений:
Длина байтов данных в связанной переменной. Драйвер проверка эту длину, только если переменная является символом или двоичным значением (ValueType — SQL_C_CHAR или SQL_C_BINARY).
SQL_NTS. Данные являются строкой, завершающейся значением NULL.
SQL_NULL_DATA. Значение данных равно NULL, и драйвер игнорирует значение привязанной переменной.
SQL_DATA_AT_EXEC или результат макроса SQL_LEN_DATA_AT_EXEC. Значение параметра должно быть отправлено с помощью SQLPutData. Дополнительные сведения см. в разделе "Отправка длинных данных" далее в этом разделе.
В следующей таблице показаны значения привязанной переменной и буфера длины или индикатора, которые приложение задает для различных значений параметров.
| Параметр значение |
Параметр (SQL) тип данных |
Переменная (C) тип данных |
Значение в привязка переменная |
Значение в длина или индикатор buffer[d] |
|---|---|---|---|---|
| "ABC" | SQL_CHAR | SQL_C_CHAR | ABC\0[a] | SQL_NTS или 3 |
| 10 | SQL_INTEGER | SQL_C_SLONG | 10 | -- |
| 10 | SQL_INTEGER | SQL_C_CHAR | 10\0[a] | SQL_NTS или 2 |
| 1 вечера | SQL_TYPE_TIME | SQL_C_TYPE_TIME | 13,0,0[b] | -- |
| 1 вечера | SQL_TYPE_TIME | SQL_C_CHAR | {t '13:00:00'}\0[a], [c] | SQL_NTS или 14 |
| NULL | SQL_SMALLINT | SQL_C_SSHORT | -- | SQL_NULL_DATA |
[a] "\0" представляет символ завершения null. Символ завершения null требуется только в том случае, если значение в буфере длины или индикатора SQL_NTS.
[b] Числа в этом списке — это числа, хранящиеся в полях структуры TIME_STRUCT.
[c] Строка использует предложение escape-даты ODBC. Дополнительные сведения см. в разделе "Литералы даты", "Время" и "Метка времени".
[d] Драйверы всегда должны проверка это значение, чтобы узнать, является ли это специальным значением, например SQL_NULL_DATA.
Что драйвер делает со значением параметра во время выполнения, зависит от драйвера. При необходимости драйвер преобразует значение из типа данных C и длины байтов привязанной переменной в тип данных SQL, точность и масштаб параметра. В большинстве случаев драйвер отправляет значение источнику данных. В некоторых случаях он форматирует значение как текст и вставляет его в инструкцию SQL перед отправкой инструкции в источник данных.