数据类型标识符和描述符

本附录前面的 SQL 数据类型C 数据类型 部分中列出的数据类型是“简洁”数据类型:每个标识符引用单个数据类型。 标识符和数据类型之间存在一对一对应关系。 但是,描述符并非在所有情况下都使用单个值来标识数据类型。 在某些情况下,它们使用“详细”数据类型和类型子代码。 对于除 datetime 和 interval 数据类型之外的所有数据类型,详细类型标识符与简洁类型标识符相同,SQL_DESC_DATETIME_INTERVAL_CODE中的值等于 0。 但是,对于 datetime 和 interval 数据类型,详细类型 (SQL_DATETIME或SQL_INTERVAL) 存储在 SQL_DESC_TYPE 中,简明类型存储在 SQL_DESC_CONCISE_TYPE 中,每个简明类型的子代码存储在 SQL_DESC_DATETIME_INTERVAL_CODE 中。 设置其中一个字段会影响其他字段。 有关这些字段的详细信息,请参阅 SQLSetDescField 函数说明。

当为某些数据类型设置SQL_DESC_TYPE或SQL_DESC_CONCISE_TYPE字段时,SQL_DESC_DATETIME_INTERVAL_PRECISION、SQL_DESC_LENGTH、SQL_DESC_PRECISION和SQL_DESC_SCALE字段将自动设置为默认值(适用于该数据类型)。 有关详细信息,请参阅 SQLSetDescField 中SQL_DESC_TYPE字段的说明。 如果设置的任何默认值都不适用,应用程序应通过调用 SQLSetDescField 显式设置描述符字段。

下表显示了每个日期/时间间隔 SQL 和 C 类型标识符的简洁类型标识符、详细类型标识符和类型子代码。 如下表所示,对于 datetime 和 interval 数据类型,SQL_DESC_TYPE和SQL_DESC_DATETIME_INTERVAL_CODE字段具有相同的清单常量,对于实现描述符) 中的 SQL 数据类型 (,对于应用程序描述符) 中 (C 数据类型。

简洁的 SQL 类型 简明 C 类型 详细类型 DATETIME_INTERVAL_CODE
SQL_TYPE_DATE SQL_C_TYPE_DATE SQL_DATETIME SQL_CODE_DATE
SQL_TYPE_TIME SQL_C_TYPE_TIME SQL_DATETIME SQL_CODE_TIME
SQL_TYPE_TIMESTAMP SQL_C_TYPE_TIMESTAMP SQL_DATETIME SQL_CODE_TIMESTAMP
SQL_INTERVAL_MONTH SQL_C_INTERVAL_MONTH SQL_INTERVAL SQL_CODE_MONTH
SQL_INTERVAL_YEAR SQL_C_INTERVAL_YEAR SQL_INTERVAL SQL_CODE_YEAR
SQL_INTERVAL_YEAR_TO_MONTH SQL_C_INTERVAL_YEAR_TO_MONTH SQL_INTERVAL SQL_CODE_YEAR_TO_MONTH
SQL_INTERVAL_DAY SQL_C_INTERVAL_DAY SQL_INTERVAL SQL_CODE_DAY
SQL_INTERVAL_HOUR SQL_C_INTERVAL_HOUR SQL_INTERVAL SQL_CODE_HOUR
SQL_INTERVAL_MINUTE SQL_C_INTERVAL_MINUTE SQL_INTERVAL SQL_CODE_MINUTE
SQL_INTERVAL_SECOND SQL_C_INTERVAL_SECOND SQL_INTERVAL SQL_CODE_SECOND
SQL_INTERVAL_DAY_TO_HOUR SQL_C_INTERVAL_DAY_TO_HOUR SQL_INTERVAL SQL_CODE_DAY_TO_HOUR
SQL_INTERVAL_DAY_TO_MINUTE SQL_C_INTERVAL_DAY_TO_MINUTE SQL_INTERVAL SQL_CODE_DAY_TO_MINUTE
SQL_INTERVAL_DAY_TO_SECOND SQL_C_INTERVAL_DAY_TO_SECOND SQL_INTERVAL SQL_CODE_DAY_TO_SECOND
SQL_INTERVAL_HOUR_TO_MINUTE SQL_C_INTERVAL_HOUR_TO_MINUTE SQL_INTERVAL SQL_CODE_HOUR_TO_MINUTE
SQL_INTERVAL_HOUR_TO_SECOND SQL_C_INTERVAL_HOUR_TO_SECOND SQL_INTERVAL SQL_CODE_HOUR_TO_SECOND
SQL_INTERVAL_MINUTE_TO_SECOND SQL_C_INTERVAL_MINUTE_TO_SECOND SQL_INTERVAL SQL_CODE_MINUTE_TO_SECOND