データ型識別子と記述子
この付録の「 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 |