Преобразование из C в SQL: числовые данные
Идентификаторы числовых типов данных ODBC C:
SQL_C_STINYINT
SQL_C_SLONG
SQL_C_UTINYINT
SQL_C_ULONG
SQL_C_TINYINT
SQL_C_LONG
SQL_C_SSHORT
SQL_C_FLOAT
SQL_C_USHORT
SQL_C_DOUBLE
SQL_C_SHORT
SQL_C_NUMERIC
SQL_C_SBIGINT
SQL_C_UBIGINT
В следующей таблице показаны типы данных SQL ODBC, в которые могут быть преобразованы числовые данные C. Описание столбцов и терминов в таблице см. в разделе "Преобразование данных из C в типы данных SQL".
Идентификатор типа SQL | Тест | SQLSTATE |
---|---|---|
SQL_CHAR SQL_VARCHAR SQL_LONGVARCHAR |
Число цифр <= длина байтов столбца Число цифр длины байтов столбца > |
Недоступно 22001 |
SQL_WCHAR SQL_WVARCHAR SQL_WLONGVARCHAR |
Число символов = длина символов столбца < Число символов длины символов > |
Недоступно 22001 |
SQL_DECIMAL[b] SQL_NUMERIC[b] SQL_TINYINT[b] SQL_SMALLINT[b] SQL_INTEGER[b] SQL_BIGINT[b] |
Данные преобразуются без усечения или усечения дробных цифр Данные, преобразованные с усечением целых цифр |
Недоступно 22003 |
SQL_REAL SQL_FLOAT SQL_DOUBLE |
Данные находится в диапазоне типа данных, в который преобразуется число. Данные находятся вне диапазона типа данных, в который преобразуется число. |
Недоступно 22003 |
SQL_BIT | Данные : 0 или 1 Данные больше 0, менее 2 и не равны 1 Данные меньше 0 или больше или равно 2 |
Недоступно 22001 22003 |
SQL_INTERVAL_YEAR[a] SQL_INTERVAL_MONTH[a] SQL_INTERVAL_DAY[a] SQL_INTERVAL_HOUR[a] SQL_INTERVAL_MINUTE[a] SQL_INTERVAL_SECOND[a] |
Данные не усечены. Усеченные данные. |
Недоступно 22015 |
[a] Эти преобразования поддерживаются только для точных числовых типов данных (SQL_C_STINYINT, SQL_C_UTINYINT, SQL_C_SSHORT, SQL_C_USHORT, SQL_C_SLONG, SQL_C_ULONG или SQL_C_NUMERIC). Они не поддерживаются для приблизительных числовых типов данных (SQL_C_FLOAT или SQL_C_DOUBLE). Точные числовые типы данных C нельзя преобразовать в тип интервала SQL, точность интервала которого не является одним полем.
[b] В случае "n/a" драйвер может при необходимости возвращать SQL_SUCCESS_WITH_INFO и 01S07 при наличии дробной усечения.
Драйвер игнорирует значение длины или индикатора при преобразовании данных из числовых типов данных C и предполагает, что размер буфера данных — это размер числового типа данных C. Значение длины или индикатора передается в аргументе StrLen_or_Ind в SQLPutData и в буфере, указанном с аргументом StrLen_or_IndPtr в SQLBindParameter. Буфер данных указывается с аргументом DataPtr в SQLPutData и аргументом ParameterValuePtr в SQLBindParameter.