Identificateurs et descripteurs des types de données

Les types de données répertoriés dans les sections Types de données SQL et Types de données C plus haut dans cette annexe sont des types de données « concis » : chaque identificateur fait référence à un type de données unique. Il existe une correspondance un-à-un entre l’identificateur et le type de données. Toutefois, les descripteurs n’utilisent pas dans tous les cas une valeur unique pour identifier les types de données. Dans certains cas, ils utilisent un type de données « détaillé » et un sous-code de type. Pour tous les types de données à l’exception des types de données datetime et interval, l’identificateur de type détaillé est identique à l’identificateur de type concis et la valeur dans SQL_DESC_DATETIME_INTERVAL_CODE est égale à 0. Toutefois, pour les types de données datetime et interval, un type détaillé (SQL_DATETIME ou SQL_INTERVAL) est stocké dans SQL_DESC_TYPE, un type concis est stocké dans SQL_DESC_CONCISE_TYPE et un sous-code pour chaque type concis est stocké dans SQL_DESC_DATETIME_INTERVAL_CODE. La définition de l’un de ces champs affecte les autres. Pour plus d’informations sur ces champs, consultez la description de la fonction SQLSetDescField .

Lorsque le champ SQL_DESC_TYPE ou SQL_DESC_CONCISE_TYPE est défini pour certains types de données, les champs SQL_DESC_DATETIME_INTERVAL_PRECISION, SQL_DESC_LENGTH, SQL_DESC_PRECISION et SQL_DESC_SCALE sont automatiquement définis sur les valeurs par défaut, en fonction du type de données. Pour plus d’informations, consultez la description du champ SQL_DESC_TYPE dans SQLSetDescField. Si l’une des valeurs par défaut définies n’est pas appropriée, l’application doit définir explicitement le champ de descripteur par le biais d’un appel à SQLSetDescField.

Le tableau suivant présente l’identificateur de type concis, l’identificateur de type détaillé et le sous-code de type pour chaque identificateur de type SQL et C datetime et interval. Comme indiqué dans ce tableau, pour les types de données datetime et interval, les champs SQL_DESC_TYPE et SQL_DESC_DATETIME_INTERVAL_CODE ont les mêmes constantes de manifeste à la fois pour les types de données SQL (dans les descripteurs d’implémentation) et pour les types de données C (dans les descripteurs d’application).

Type SQL concis Type C concis Type détaillé 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