動作の変更とは、インターフェイスの 構文 が変わらないものの、 セマンティクス が変更された変更です。 これらの変更の場合、ODBC 2 で使用される機能。x の動作は、ODBC 3 の同じ機能とは異なります。x。
アプリケーションが ODBC 2 を表示するかどうか。x 動作または ODBC 3。x 動作は、SQL_ATTR_ODBC_VERSION環境属性によって決まります。 この 32 ビット値は、ODBC 2.x の動作を示すために SQL_OV_ODBC2 に設定され、ODBC 3.x の動作を示すために SQL_OV_ODBC3 に設定されます。
SQL_ATTR_ODBC_VERSION環境属性は、 SQLSetEnvAttr の呼び出しによって設定されます。 アプリケーションが SQLAllocHandle を呼び出して環境ハンドルを割り当てた後、 SQLSetEnvAttr をすぐに呼び出して、表示される動作を設定する必要があります。 (その結果、割り当てられているがバージョンレスの状態で環境ハンドルを記述するための新しい環境状態が発生します)。詳細については、「 付録 B: ODBC 状態遷移テーブル」を参照してください。
アプリケーションは、SQL_ATTR_ODBC_VERSION環境属性でどのような動作が示されるかを示しますが、この属性は ODBC 2 とのアプリケーションの接続には影響しません。x または ODBC 3。x ドライバー。 ODBC 3.x アプリケーションは、環境属性の設定に関係なく、ODBC 2.x ドライバーまたは 3.x ドライバーのいずれにも接続できます。
ODBC 3。x アプリケーションでは SQLAllocEnv を呼び出さないでください。 その結果、ドライバー マネージャーが SQLAllocEnv の呼び出しを受け取った場合、アプリケーションは ODBC 2 として認識されます。x アプリケーション。
SQL_ATTR_ODBC_VERSION属性は、ODBC 3 の 3 つの異なる側面に影響します。x ドライバーの動作:
SQLSTATEs
日付、時刻、タイムスタンプのデータ型
SQLTable の CatalogName 引数は、ODBC 3 の検索パターンを受け入れます。x。ODBC 2 では使用できません。x
SQL_ATTR_ODBC_VERSION環境属性の設定は 、SQLSetParam または SQLBindParam には影響しません。 SQLColAttribute もこのビットの影響を受けません。 SQLColAttribute は ODBC のバージョン (日付型、有効桁数、小数点以下桁数、長さ) の影響を受ける属性を返しますが、想定される動作は FieldIdentifier 引数の値によって決まります。 FieldIdentifier が SQL_DESC_TYPE と等しい場合、SQLColAttribute は ODBC 3 を返します。日付、時刻、およびタイムスタンプの x コード。FieldIdentifier が SQL_COLUMN_TYPE と等しい場合、SQLColAttribute は ODBC 2 を返します。日付、時刻、およびタイムスタンプの x コード。
このセクションには、次のトピックが含まれています。