Поделиться через


Преобразование из 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.