Identificadores y descriptores de tipo de datos

Los tipos de datos enumerados en las secciones Tipos de datos SQL y Tipos de datos de C anteriores en este apéndice son tipos de datos "concisos": cada identificador hace referencia a un único tipo de datos. Hay una correspondencia uno a uno entre el identificador y el tipo de datos. Sin embargo, los descriptores no usan en todos los casos un único valor para identificar los tipos de datos. En algunos casos, usan un tipo de datos "detallado" y un subcódigo de tipo. Para todos los tipos de datos excepto los tipos de datos datetime e interval, el identificador de tipo detallado es el mismo que el identificador de tipo conciso y el valor de SQL_DESC_DATETIME_INTERVAL_CODE es igual a 0. Sin embargo, para los tipos de datos datetime e interval, se almacena un tipo detallado (SQL_DATETIME o SQL_INTERVAL) en SQL_DESC_TYPE, se almacena un tipo conciso en SQL_DESC_CONCISE_TYPE y se almacena un subcódigo para cada tipo conciso en SQL_DESC_DATETIME_INTERVAL_CODE. Establecer uno de estos campos afecta a los demás. Para obtener más información sobre estos campos, vea la descripción de la función SQLSetDescField .

Cuando se establece el campo SQL_DESC_TYPE o SQL_DESC_CONCISE_TYPE para algunos tipos de datos, los campos SQL_DESC_DATETIME_INTERVAL_PRECISION, SQL_DESC_LENGTH, SQL_DESC_PRECISION y SQL_DESC_SCALE se establecen automáticamente en valores predeterminados, según corresponda para el tipo de datos. Para obtener más información, vea la descripción del campo SQL_DESC_TYPE en SQLSetDescField. Si alguno de los valores predeterminados establecidos no es adecuado, la aplicación debe establecer explícitamente el campo descriptor a través de una llamada a SQLSetDescField.

En la tabla siguiente se muestra el identificador de tipo conciso, el identificador de tipo detallado y el subcódigo de tipo para cada identificador de tipo datetime e interval SQL y C. Como indica esta tabla, para los tipos de datos datetime e interval, los campos SQL_DESC_TYPE y SQL_DESC_DATETIME_INTERVAL_CODE tienen las mismas constantes de manifiesto para los tipos de datos SQL (en descriptores de implementación) y para los tipos de datos C (en descriptores de aplicación).

Tipo SQL conciso Tipo C conciso Tipo detallado 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