Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Чтобы задать значение параметра, приложение просто задает значение переменной, привязанной к параметру. Не важно, если задано это значение, если он установлен перед выполнением инструкции. Приложение может задать значение до или после привязки переменной, и оно может изменить значение столько раз, сколько он хочет. При выполнении инструкции драйвер просто извлекает текущее значение переменной. Это особенно полезно при выполнении подготовленной инструкции более одного раза; приложение задает новые значения для некоторых или всех переменных при каждом выполнении инструкции. Пример этого см. в разделе "Подготовленное выполнение" ранее в этом разделе.
Если буфер длины или индикатора привязан к вызову 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. Дополнительные сведения см. в разделе "Отправка длинных данных" далее в этом разделе.
В следующей таблице показаны значения привязанной переменной и буфера длины или индикатора, которые приложение задает для различных значений параметров.
| Параметр value |
Параметр (SQL) data type |
Переменная (C) data type |
Значение в Связаны variable |
Значение в длина или индикатор 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 |
| Отсутствует | 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 перед отправкой инструкции в источник данных.