データ型識別子と記述子

この付録の「 SQL データ型C データ型 」セクションに記載されているデータ型は、"簡潔な" データ型です。各識別子は 1 つのデータ型を参照します。 識別子とデータ型の間には一対一の対応があります。 ただし、記述子は、すべてのケースで 1 つの値を使用してデータ型を識別するわけではありません。 場合によっては、"verbose" データ型と型サブコードを使用します。 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に格納されます。 これらのフィールドの 1 つを設定すると、他のフィールドに影響します。 これらのフィールドの詳細については、 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 の呼び出しを通じて記述子フィールドを明示的に設定する必要があります。

次の表は、各 datetime と interval 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