Datentypbezeichner und Deskriptoren

Die in den Abschnitten SQL-Datentypen und C-Datentypen weiter oben in diesem Anhang aufgeführten Datentypen sind "präzise" Datentypen: Jeder Bezeichner bezieht sich auf einen einzelnen Datentyp. Es besteht eine 1:1-Korrespondenz zwischen dem Bezeichner und dem Datentyp. Deskriptoren verwenden jedoch nicht in allen Fällen einen einzelnen Wert, um Datentypen zu identifizieren. In einigen Fällen verwenden sie einen "ausführlichen" Datentyp und einen Typuntercode. Für alle Datentypen außer datetime und interval ist der ausführliche Typbezeichner identisch mit dem prägnanten Typbezeichner, und der Wert in SQL_DESC_DATETIME_INTERVAL_CODE ist gleich 0. Für datetime- und interval-Datentypen wird jedoch ein ausführlicher Typ (SQL_DATETIME oder SQL_INTERVAL) in SQL_DESC_TYPE, ein prägnanter Typ in SQL_DESC_CONCISE_TYPE und ein Untercode für jeden prägnanten Typ in SQL_DESC_DATETIME_INTERVAL_CODE gespeichert. Das Festlegen eines dieser Felder wirkt sich auf die anderen Felder aus. Weitere Informationen zu diesen Feldern finden Sie in der Beschreibung der SqlSetDescField-Funktion .

Wenn das SQL_DESC_TYPE- oder SQL_DESC_CONCISE_TYPE feld für einige Datentypen festgelegt ist, werden die Felder SQL_DESC_DATETIME_INTERVAL_PRECISION, SQL_DESC_LENGTH, SQL_DESC_PRECISION und SQL_DESC_SCALE automatisch auf Standardwerte festgelegt, je nach Datentyp. Weitere Informationen finden Sie in der Beschreibung des felds SQL_DESC_TYPE in SQLSetDescField. Wenn einer der festgelegten Standardwerte nicht geeignet ist, sollte die Anwendung das Deskriptorfeld explizit über einen Aufruf von SQLSetDescField festlegen.

Die folgende Tabelle zeigt den präzisen Typbezeichner, den ausführlichen Typbezeichner und den Typuntercode für jeden Datetime- und Intervall-SQL- und C-Typbezeichner. Wie in dieser Tabelle angegeben, verfügen die Felder SQL_DESC_TYPE und SQL_DESC_DATETIME_INTERVAL_CODE für datetime- und interval-Datentypen sowohl für SQL-Datentypen (in Implementierungsdeskriptoren) als auch für C-Datentypen (in Anwendungsdeskriptoren) über die gleichen Manifestkonstanten.

Präziser SQL-Typ Prägnanter C-Typ Ausführlicher Typ 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