Идентификаторы и дескрипторы типа данных

Типы данных, перечисленные в разделах "Типы данных SQL" и "Типы данных C" выше в этом приложении, являются краткими. Каждый идентификатор ссылается на один тип данных. Между идентификатором и типом данных существует одно-одно соответствие. Однако дескрипторы не во всех случаях используют одно значение для идентификации типов данных. В некоторых случаях они используют подробный тип данных и подкод типа. Для всех типов данных, кроме типов данных datetime и интервала, подробный идентификатор типа совпадает с кратким идентификатором типа, а значение в SQL_DESC_DATETIME_INTERVAL_CODE равно 0. Однако для типов данных datetime и интервала подробный тип (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 автоматически задаются значения по умолчанию, применимые к типу данных. Дополнительные сведения см. в описании поля SQL_DESC_TYPE в SQLSetDescField. Если какой-либо из наборов значений по умолчанию не подходит, приложение должно явно задать поле дескриптора с помощью вызова SQLSetDescField.

В следующей таблице показан краткий идентификатор типа, подробный идентификатор типа и подкод типа типа для каждого идентификатора даты и интервала SQL и C. Как указано в этой таблице, для типов данных datetime и интервала поля 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