Преобразование данных из SQL в C: символы
Идентификаторы символьных типов данных ODBC SQL приведены ниже.
- SQL_CHAR
- SQL_VARCHAR
- SQL_LONGVARCHAR
- SQL_WCHAR
- SQL_WVARCHAR
- SQL_WLONGVARCHAR
В следующей таблице показаны типы данных ODBC C, в которые могут быть преобразованы символьные данные SQL. Описание столбцов и терминов в таблице см. в разделе "Преобразование данных из SQL в типы данных C".
Идентификатор типа C | Тест | TargetValuePtr | StrLen_or_IndPtr | SQLSTATE |
---|---|---|---|---|
SQL_C_CHAR | Длина байтов данных <BufferLength Длина байтов данных >= BufferLength |
Data Усеченные данные |
Длина данных в байтах Длина данных в байтах |
Недоступно 01004 |
SQL_C_WCHAR | Длина символа буфера данных <BufferLength Длина символов данных >= BufferLength |
Data Усеченные данные |
Длина данных в символах Длина данных в символах |
Недоступно 01004 |
SQL_C_STINYINT SQL_C_UTINYINT SQL_C_TINYINT SQL_C_SBIGINT SQL_C_UBIGINT SQL_C_SSHORT SQL_C_USHORT SQL_C_SHORT SQL_C_SLONG SQL_C_ULONG SQL_C_LONG SQL_C_NUMERIC | Данные преобразуются без усечения[b] Данные, преобразованные с усечением дробных цифр[a] Преобразование данных приведет к потере целого (в отличие от дробных) цифр[a] Данные не являются числовым литеральным[b] |
Data Усеченные данные Undefined Undefined |
Число байтов типа данных C Число байтов типа данных C Undefined Undefined |
Недоступно 01S07 22003 22018 |
SQL_C_FLOAT SQL_C_DOUBLE | Данные находится в диапазоне типа данных, в который преобразуется число[a] Данные находятся вне диапазона типа данных, в который преобразуется число[a] Данные не являются числовым литеральным[b] |
Data Undefined Undefined |
Размер типа данных C Undefined Undefined |
Недоступно 22003 22018 |
SQL_C_BIT | Данные : 0 или 1 Данные больше 0, менее 2 и не равны 1 Данные меньше 0 или больше или равно 2 Данные не являются числовым литералом |
Data Усеченные данные Undefined Undefined |
1[b] 1[b] Undefined Undefined |
Недоступно 01S07 22003 22018 |
SQL_C_BINARY | Длина байтов данных <= BufferLength Длина байтов данных >BufferLength |
Data Усеченные данные |
Длина данных в байтах Длина данных |
Недоступно 01004 |
SQL_C_TYPE_DATE | Значение данных — допустимое значение даты[a] Значение данных является допустимым значением метки времени; часть времени равна нулю[a] Значение данных является допустимым значением метки времени; часть времени ненулевой[a],[c] Значение данных не является допустимым значением даты или метки времени[a] |
Data Data Усеченные данные Undefined |
6[b] 6[b] 6[b] Undefined |
Недоступно Недоступно 01S07 22018 |
SQL_C_TYPE_TIME | Значение данных является допустимым значением времени, а значение дробных секунд — 0[a] Значение данных является допустимым значением метки времени или допустимым значением времени; часть дробных секунд равна нулю[a],[d] Значение данных является допустимым значением метки времени; часть дробных секунд ненулевой[a],[d],[e] Значение данных не является допустимым значением времени или меткой времени[a] |
Data Data Усеченные данные Undefined |
6[b] 6[b] 6[b] Undefined |
Недоступно Недоступно 01S07 22018 |
SQL_C_TYPE_TIMESTAMP | Значение данных — допустимое значение метки времени или допустимое значение времени; часть дробных секунд не усечена[a] Значение данных — допустимое значение метки времени или допустимое значение времени; часть дробных секунд усечена[a] Значение данных — допустимое значение даты[a] Значение данных — допустимое значение времени[a] Значение данных не является допустимым значением даты, времени или меткой времени[a] |
Data Усеченные данные Data[f] Data[g] Undefined |
16[b] 16[b] 16[b] 16[b] Undefined |
Недоступно 01S07 Недоступно Недоступно 22018 |
Все типы интервалов C | Значение данных является допустимым значением интервала; усечение не выполняется. Значение данных — допустимое значение интервала; усечение одного или нескольких конечных полей Допустимый интервал данных; ведущее поле значительной точностью теряется Значение данных не является допустимым значением интервала |
Data Усеченные данные Undefined Undefined |
Длина данных в байтах Длина данных в байтах Undefined Undefined |
Недоступно 01S07 22015 22018 |
[a] Значение BufferLength игнорируется для этого преобразования. Драйвер предполагает, что размер *TargetValuePtr — это размер типа данных C.
[b] Это размер соответствующего типа данных C.
[c] Часть времени метки времени усечена.
[d] Часть даты значения метки времени игнорируется.
[e] Доля секунды метки времени усечена.
[f] Поля времени структуры метки времени равны нулю.
[g] Поля даты структуры метки времени задаются текущей датой.
Дополнительные пробелы
Начальные и конечные пробелы игнорируются при преобразовании символьных данных SQL в любой из следующих типов:
- date
- numeric
- Время
- TIMESTAMP
- данные интервала C