CLI/ODBC/JDBC ドライバーは、クライアント構成アシスタントまたは ODBC ドライバー・マネージャー (システムにインストールされている場合) から、あるいは手動で db2cli.ini ファイルを編集して構成できます。詳細については、インストールおよび構成補足 または CLI ガイドおよび解説書 を参照してください。
DB2 CLI/ODBC ドライバーのデフォルトの振る舞いは、db2cli.ini ファイルまたは SQLDriverConnect() か SQLBrowseConnect() CLI API を経由して PATCH1 および PATCH2 キーワードの両方に値を指定して、変更することができます。
PATCH1 キーワードは、ユーザーが設定したいすべてのキーワードを追加して指定されます。たとえば、パッチ 1、2、および 8 が指定されると、PATCH1 には値 11 があります。次が各キーワードの値の記述と、ドライバーへの効果です。
1 - これにより、ドライバーは "count(exp)" を検索し、 "count(distinct exp)" と置き換えます。DB2 のバージョンによっては、 "count(exp)" 構文をサポートするものがあり、この構文は ODBC アプリケーション で生成されるため、この処置が必要になります。Microsoft のアプリケーションでは、 サーバーが "count(exp)" 構文をサポートしないときに、この構文を必要します。 2 - ODBC アプリケーションの中には、LITERAL_PREFIX または LITERAL_SUFFIX 列の いずれかのために、SQLGetTypeInfo() 関数で SQL_NULL_DATA が戻されたときに トラップされるものがあります。これは、ドライバーに、空ストリングを 戻すよう強制します。Impromptu 2.0 で必要です。 4 - これはタイム・スタンプの時刻と小数部がゼロの場合、ドライバーに 入力タイム・スタンプ・データを日付データとして扱うよう強制します。 Microsoft Access で必要です。 8 - これはタイム・スタンプの日付部分が 1899-12-30 の場合、ドライバーに 時間データとして入力タイム・スタンプを扱うよう強制します。 Microsoft Access で必要です。 16 - 未使用 32 - ドライバーに、SQL_LONGVARCHAR、SQL_LONGVARBINARY、および SQL_LONGVARGRAPHIC 列に関する情報を戻さないよう強制します。アプリケーションでは、 長いフィールドがサポートされないように示されます。Lotus 123 で必要です。 64 - これは、ドライバーにグラフィックス出力ストリングでヌル終了を強制します。 2 バイト環境の Microsoft Access で必要です。 128 - これは、ドライバーが、照会 "SELECT Config, nValue FROM MSysConf" を サーバーへ送信するよう強制します。現在、ドライバーは、S0002 (表が見つからない) の SQLSTATE 値に関連したエラーを戻しています。ユーザーがデータベースにこの構成表を 作成し、アプリケーションからアクセスできるようにしたい場合に必要です。 256 - ドライバーに SQLStatistics() 呼び出しの最初に、1 次キー列を戻すよう 強制します。現在、ドライバーは、索引名でソートされた索引を返します。 これは、標準 ODBC の振る舞いです。 512 - ドライバーに、SQL_API_SQLTABLEPRIVILEGES と SQL_API_SQLCOLUMNPRIVILEGES の両方で SQLGetFunctions() 関数で FALSE を戻すよう強制します。 1024 - 実行された UPDATE または DELETE ステートメントが行に影響しない場合に、 ドライバーに、SQLExecute() または SQLExecDirect() で、SQL_NO_DATA_FOUND ではなく SQL_SUCCESS を戻すよう強制します。Visual Basic アプリケーションで必要です。 2048 - 未使用 4096 - 自動コミット・モードの時に、カーソルのクローズ後に COMMIT を 実行しないよう、ドライバーに強制します。 8192 - ドライバーに、ストアード・プロシージャーの呼び出し後に、余分な結果セットを 戻すよう強制します。この結果セットは、ストアード・プロシージャーの出力値から 構成される 1 行の結果セットです。 Powerbuild アプリケーションでアクセスできます。 32768 - ドライバーに、DB2 MVS 同義語を使用して、Microsoft Query アプリケーション を強制的に動作させます。 65536 - ドライバーに、実際には GRAPHIC リテラルである文字リテラルの前に "G" を手動で 挿入するよう強制します。このパッチは、2 バイト環境で動作する時には、 必ず指定する必要があります。 131072 - タイム・スタンプ列が固有索引の一部である時、タイム・スタンプ列を CHAR(26) 列として記述するようドライバーに強制します。 Microsoft のアプリケーションで必要です。 262144 - ドライバーに、SYSCAT.PROCEDURES および SYSCAT.PROCPARMS 表の 代わりに、疑似カタログ表の db2cli.procedures を使用するよう 強制します。 524288 - ドライバーに、DB2/400 V3.x システムへのシステム表照会を行う際に、 TABLE_SCHEMA の代わりに SYSTEM_TABLE_SCHEMA を使用するよう強制します。 この結果、パフォーマンスが向上されます。 1048576 - ドライバーに、SQLPutData() からのゼロ長ストリングを SQL_NULL_DATA として扱うよう強制します。
PATCH2 キーワードは PATCH1 キーワードとは異なります。この場合、複数のパッチがコンマ区切り記号を使用して指定されます。たとえば、パッチ 1、4、および 5 が指定されると、PATCH2 には値 "1,4,5" があります。次が各キーワードの値の記述と、ドライバーへの効果です。
1 - ドライバーに、CALL ステートメントでのストアード・プロシージャーの 名前を大文字に強制的に変換させます。 2 - 未使用。 3 - ドライバーに、スキーマ呼び出しのすべての引き数を大文字にするよう強制します。 4 - スキーマ呼び出し (SQLColumns()、SQLProcedureColumns() など) に対して ドライバーが、バージョン 5 のような結果セットの代わりに、バージョン 2.1.2 のような 結果セットを戻すよう強制します。 5 - ドライバーに、入力 VARCHAR 列の処理を最適化しないよう強制します。 入力 VARCHAR 列では、データへのポインターと長さへのポインターが メモリー内で連続しています。 6 - ドライバーに、スクロール可能カーソルがサポートされないというメッセージを 戻すよう強制します。DB2 クライアントがバージョン 5 で、サーバーが DB2 UDB バージョン 5 の場合に、Visual Basic プログラムで必要です。 7 - ドライバーに、すべての GRAPHIC 列データ・タイプを CHAR 列データ・タイプ にマップするよう強制します。2 バイト環境で必要です。 8 - ドライバーに、スキーマ呼び出しのカタログ検索引き数を無視するよう強制します。 9 - カーソルの Early Close でコミットしません 10 - 未使用 11 - カタログ名がサポートされていることを報告します (VB ストアード・プロシージャー) 12 - スキーマ呼び出し引き数から二重引用符を除去します (Visual Interdev) 13 - db2cli.ini から出力接続ストリングへ、キーワードを追加しません 14 - SQLProcedures() と SQLProcedureColumns() でスキーマ名を無視します 15 - 文字出力で小数点にピリオドを常に使用します 16 - オープンごとに describe 情報を強制的に戻します 17 - describe で列名を返しません 18 - パラメーター・マーカーでリテラルを置き換えます 19 - 現在、DB2 MVS V4.1 は、括弧が外部結合文節の ON 文節で許可されている ODBC 構文をサポートしていません。 この PATCH2 をオンにした場合、外部結合文節が ODBC エスケープ・シーケンスにあると、 IBM DB2 ODBC ドライバーが括弧をストリップします。 この PATCH2 は DB2 MVS 4.1 に対してのみ使用してください。 20 - 現在、MVS 上の DB2 は、両方のオペランド (expression ? BETWEEN ?) として パラメーター・マーカーを使用した BETWEEN 述部をサポートしていません。 このパッチをオンにすると、IBM ODBC ドライバーが (expression >= ? と expression <= ?) に述部を再書き込みします。 21 - ストアード・プロシージャー用のすべての OUTPUT only パラメーターを SQL_NULL_DATA に設定します。 22 - この PATCH2 によって、IBM ODBC ドライバーは外部結合がサポートされていないと報告します。 これは外部結合ステートメントの使用時に、SELECT DISTINCT col1 または ORDER BY col1 (col1 は 254 文字を超える) を生成するアプリケーションに使用され、DB2 UDB は この方式では、254 バイトを超える長さの列をサポートしないためです。 23 - cbColDef=0 でバインドしたパラメーターに入力を最適化しません 24 - 時刻値を文字としてマッピングするアクセス予備手段 25 - 10 進数列のアクセス予備手段 - CHAR 表記の後続ゼロの除去 26 - sqlcode 464 をアプリケーションに戻しません - 結果セットが戻されます 27 - アプリケーションで有効値を指定している場合でも、SQLTables で強制的に TABLETYPE キーワード値を使用します 28 - 実際の列を重複列として記述します 29 - 10 進数列の ADO 予備手段 - 値 x の先行ゼロの除去 ここで、1 > x > -1 (特定の MDAC バージョンでのみ必要) 30 - ストアード・プロシージャーのキャッシュ最適化を使用不可にします 31 - SQLStatistics 呼び出しの別名の統計を報告します 32 - sqlcode -727 理由コード 4 の処理を変更します 33 - CHAR に変換時にタイム・スタンプの ISO バージョンを戻します (ODBC バージョンとは逆) 34 - CHAR FOR BIT DATA 列を CHAR として報告します 35 - SQL_DESC_BASE_TABLE_NAME が要求された場合に無効な TABLENAME を 報告します - ADO 読み取り専用最適化 36 - 予約済み 37 - 予約済み