从 SQL 到 C:年月间隔
年月间隔 ODBC SQL 数据类型的标识符如下:
- SQL_INTERVAL_MONTH
- SQL_INTERVAL_YEAR
- SQL_INTERVAL_YEAR_TO_MONTH
下表显示了可将年月间隔 SQL 数据转换为的 ODBC C 数据类型。 有关表中的列和术语的说明,请参阅 将数据从 SQL 转换为 C 数据类型。
C 类型标识符 | 测试 | TargetValuePtr | StrLen_or_IndPtr | SQLSTATE |
---|---|---|---|---|
SQL_C_INTERVAL_MONTH[a] SQL_C_INTERVAL_YEAR[a] SQL_C_INTERVAL_YEAR_TO_MONTH[a] |
尾随字段部分未截断 尾随字段部分截断 目标前导精度不足以保存源中的数据 |
数据 截断的数据 Undefined |
数据长度(以字节为单位) 数据长度(以字节为单位) Undefined |
不适用 01S07 22015 |
SQL_C_STINYINT[b] SQL_C_UTINYINT[b] SQL_C_USHORT[b] SQL_C_SHORT[b] SQL_C_SLONG[b] SQL_C_ULONG[b] SQL_C_NUMERIC[b] SQL_C_BIGINT[b] |
间隔精度为单个字段,转换数据时未截断 间隔精度是单个字段,截断了整个 间隔精度不是单个字段 |
数据 截断的数据 Undefined |
C 数据类型的大小 数据长度(以字节为单位) C 数据类型的大小 |
不适用 22003 22015 |
SQL_C_BINARY | 数据的 <字节长度 = BufferLength 数据 >BufferLength 的字节长度 |
数据 Undefined |
数据长度(以字节为单位) Undefined |
不适用 22003 |
SQL_C_CHAR | 字符字节长度 <BufferLength 整 (数,而不是小数) 位数 <BufferLength 与小数) 位数 >相比,整个 (数 = BufferLength |
数据 截断的数据 Undefined |
C 数据类型的大小 C 数据类型的大小 Undefined |
不适用 01004 22003 |
SQL_C_WCHAR | 字符长度 <BufferLength 整 (数,而不是小数) 位数 <BufferLength 与小数) 位数 >相比,整个 (数 = BufferLength |
数据 截断的数据 Undefined |
C 数据类型的大小 C 数据类型的大小 Undefined |
不适用 01004 22003 |
[a] 年月间隔 SQL 类型可以转换为任何年月间隔 C 类型。
[b] 如果间隔精度是 YEAR 或 MONTH) 之一 (单个字段,则可以将间隔 SQL 类型转换为任何精确的数值 (SQL_C_STINYINT、SQL_C_UTINYINT、SQL_C_USHORT、SQL_C_SHORT、SQL_C_SLONG、SQL_C_ULONG或SQL_C_NUMERIC) 。
默认转换
间隔 SQL 类型的默认转换是到相应的 C 间隔数据类型。 然后,应用程序 (绑定列或参数,或设置 ARD) 适当记录中的SQL_DESC_DATA_PTR字段,以指向初始化的 SQL_INTERVAL_STRUCT 结构 (,或在调用 SQLGetData) 时将指向 SQL_ INTERVAL_STRUCT 结构的指针作为 TargetValuePtr 参数传递。