ドライバー固有のデータ型、記述子の種類、情報の種類、診断型、および属性

ドライバーは、次のドライバー固有の値を割り当てることができます。

  • SQL データ型インジケーター これらは、SQLBindParameterParameterType および SQLGetTypeInfoDataType で使用され、SQLColAttributeSQLColumnsSQLDescribeColSQLGetTypeInfoSQLDescribeParamSQLProcedureColumns、および SQLSpecialColumns によって返されます。

  • 記述子フィールドSQLColAttributeSQLGetDescField および SQLSetDescFieldFieldIdentifier で使用されます。

  • 診断フィールドSQLGetDiagField および SQLGetDiagRecDiagIdentifier で使用されます。

  • 情報の種類 これらは、SQLGetInfoInfoType で使用されます。

  • 接続属性とステートメント 属性SQLGetConnectAttrSQLGetStmtAttrSQLSetConnectAttr および SQLSetStmtAttr属性で使用されます。

これらの各項目には、ODBC で使用するために予約された値と、ドライバーで使用するために予約された値という 2 つの値のセットがあります。 ドライバー固有の値を実装する前に、ドライバーライターは、オープン グループからドライバー固有の型、フィールド、または属性ごとに値を要求する必要があります。 新しいドライバー開発の場合は、次の表で説明する範囲を使用します。 ODBC 3.8 ドライバー マネージャーでは、以下で説明する範囲内にない不明な値が使用されている場合、エラーは生成されません。 ただし、それ以降のバージョンのドライバー マネージャーでは、範囲内にない不明な値を受け取った場合にエラーが生成される可能性があります。

これらの値のいずれかが ODBC 関数に渡されると、ドライバーは値が有効かどうかを確認する必要があります。 ドライバーは、他のドライバーに適用されるドライバー固有の値の SQLSTATE HYC00 (オプション機能は実装されていません) を返します。

ODBC 3.8 以降では、ドライバー ライターは予約範囲内でドライバー固有の属性を割り当てることができます。

Note

ODBC 3.8 ドライバー マネージャーは、下位互換性のためにこれらの範囲を検証も適用もしません。 ただし、ドライバー マネージャーの将来のバージョンでは、それらを適用する可能性があります。

属性の型 ODBC データ型 ドライバー固有の範囲ベース ドライバー固有の範囲の制限 ドライバー固有の値範囲ベースの ODBC 定数
SQL データ型インジケーター SQLSMALLINT 0x4000 0x7FFF SQL_DRIVER_SQL_TYPE_BASE
記述子フィールド SQLSMALLINT 0x4000 0x7FFF SQL_DRIVER_DESCRIPTOR_BASE
診断フィールド SQLSMALLINT 0x4000 0x7FFF SQL_DRIVER_DIAGNOSTIC_BASE
情報の種類 SQLUSMALLINT 0x4000 0x7FFF SQL_DRIVER_INFO_TYPE_BASE
接続属性 SQLINTEGER 0x00004000 0x00007FFF SQL_DRIVER_CONNECT_ATTR_BASE
ステートメント属性 SQLINTEGER 0x00004000 0x00007FFF SQL_DRIVER_STATEMENT_ATTR_BASE

Note

ドライバー固有のデータ型、記述子フィールド、診断フィールド、情報の種類、ステートメント属性、接続属性については、ドライバーのドキュメントで説明する必要があります。 これらの値のいずれかが ODBC 関数に渡されると、ドライバーは値が有効かどうかを確認する必要があります。 ドライバーは、他のドライバーに適用されるドライバー固有の値の SQLSTATE HYC00 (オプション機能は実装されていません) を返します。

基本値は、ドライバーの開発を容易にするために定義されます。 たとえば、ドライバー固有の診断属性は、次の形式で定義できます。

SQL_DRIVER_DIAGNOSTIC_BASE+0, SQL_DRIVER_DIAGNOSTIC_BASE +1