接続属性 (CLI) リスト
SQLSetConnectAttr() 関数によって、 接続ハンドルに固有の CLI ドライバー属性および ODBC ドライバー属性を設定できます。 現在の接続属性の値は、SQLGetConnectAttr() 関数で取得します。 いくつかの接続属性は、CLI ドライバーに固有のものです。
次の表は、いつそれぞれの CLI 接続属性を設定できるかを示しています。
- 接続属性
- 接続属性は、SQLSetConnectAttr() 関数の ValuePtr 引数に指定します。
- SQL_ATTR_ACCESS_MODE
- SQL_MODE_READ_ONLY または SQL_MODE_READ_WRITE の 32 ビット整数値。
- SQL_MODE_READ_ONLY: アプリケーションがデータに対して読み取り操作を行うように意図されていることを示します。そのため、トランザクションには、制限の少ない分離レベル、および非コミット読み取り (SQL_TXN_READ_UNCOMMITTED) などのロッキングを使用できます。CLI ドライバーは、データベースに対する要求が読み取り専用 であることを確認しません。 更新要求が出されると、CLI ドライバーは、SQL_MODE_READ_ONLY 設定値の結果として選択されたトランザクション分離レベルを使用して、更新要求を処理します。
- SQL_MODE_READ_WRITE (デフォルト): アプリケーションがデータを変更するように意図されていることを示します。CLI ドライバーは、SQL_MODE_READ_WRITE 属性が指定された接続のデフォルトのトランザクション分離レベルを使用します。
SQL_ATTR_ACCESS_MODE 属性が指定された接続には、未解決のトランザクションがあってはなりません。
- SQL_ATTR_ALLOW_INTERLEAVED_GETDATA
- SQL_ATTR_ALLOW_INTERLEAVED_GETDATA 属性は、Dynamic Data Format (プログレッシブ・ストリーミングとも呼ばれる) をサポートするデータベース・サーバーへの接続にのみ影響を与えます。
アプリケーションが、Dynamic Data Format をサポートするデータ・サーバーを照会するときに、以前にアクセスした LOB 列に対してSQLGetData()関数を呼び出し、SQLGetData() 関数の以前の呼び出し時のデータ・オフセット位置を維持できるかどうかを指定します。
SQL_ATTR_ALLOW_INTERLEAVED_GETDATA 属性には、以下のいずれかの値を指定できます。- SQL_ALLOW_INTERLEAVED_GETDATA_OFF (デフォルト): アプリケーションが以前にアクセスした LOB 列に対してSQLGetData()関数を呼び出すように意図されていないことを示します。
- SQL_ALLOW_INTERLEAVED_GETDATA_ON: アプリケーションが以前にアクセスした LOB 列に対してSQLGetData()を呼び出し、以前の読み取り時に読み取りを停止した位置から LOB データの読み取りを開始するように意図されていることを示します。
SQL_ATTR_ALLOW_INTERLEAVED_GETDATA 属性を指定する代わりに、AllowInterleavedGetData CLI/ODBC 構成キーワードを指定することもできます。
- SQL_ATTR_ANSI_APP
- アプリケーションを ANSI または Unicode アプリケーションとして識別する 32 ビットの符号なし整数。
SQL_ATTR_ANSI_APP 属性には、以下のいずれかの値を指定します。
- SQL_AA_TRUE (デフォルト): アプリケーションが ANSI アプリケーションであることを示します。ANSI バージョンの CLI/ODBC 関数が使用されたときにアプリケーションとの間で受け渡される文字データはすべてクライアント・ページ・コードです。
- SQL_AA_FALSE: アプリケーションが Unicode アプリケーションであることを示します。Unicode (W) バージョンの CLI/ODBC 関数が呼び出されたときにアプリケーションとの間で受け渡される文字データはすべて Unicode です。
- SQL_ATTR_APP_USES_LOB_LOCATOR
- SQL_ATTR_APP_USES_LOB_LOCATOR 属性は、アプリケーションで LOB ロケーターを使用するかどうかを指定します。SQL_ATTR_APP_USES_LOB_LOCATOR 属性には、以下のいずれかの値を指定できます。
- 1 (デフォルト): LOB ロケーターを使用するように指定します。
- 0: LOB ロケーターを使用しないように指定します。 アプリケーションが、Dynamic Data Format フィーチャー (プログレッシブ・ストリーミングとも呼ばれる) をサポートするサーバーを照会する場合は、値 0 を指定すると、データをストリームでき、LOB ロケーターの使用を回避できます。
ストアード・プロシージャーの結果セットの場合は、SQL_ATTR_APP_USES_LOB_LOCATOR 属性が無視されます。
SQL_ATTR_APP_USES_LOB_LOCATOR 属性が 0 に設定された場合、アプリケーションがSQLBindCol()関数を使用して LOB ロケーターを結果セットにバインドすると、SQLFetch() 関数から、変換が無効であることを示すエラーが返されます。
LOB ロケーターが使用されることを示すために、代わりに AppUsesLOBLocator CLI/ODBC 構成キーワードを設定することもできます。
- SQL_ATTR_APPEND_FOR_FETCH_ONLY
SQL_ATTR_APPEND_FOR_FETCH_ONLY 属性を使用すると、アプリケーションで、CLI ドライバーが "FOR FETCH ONLY" 節を追加するかどうかを指定できます。例えば、BLOCKING UNAMBIG オプションを指定して CLI パッケージをバインドする場合は、アプリケーションで SQL_ATTR_APPEND_FOR_FETCH_ONLY 属性に値 0 を指定するとカーソル・ブロッキングが行われず、値 1 を指定するとカーソル・ブロッキングが行われます。
SQL_ATTR_APPEND_FOR_FETCH_ONLY 属性には、以下のいずれかの値を指定できます。- 0: CLI ドライバーは、接続先のサーバーのタイプに関係なく、"FOR FETCH ONLY" 節を SELECT ステートメントに追加しません。
- 1: CLI ドライバーは、接続先のサーバーのタイプに関係なく、必ず "FOR FETCH ONLY" 節を SELECT ステートメントに追加します。
SQL_ATTR_APPEND_FOR_FETCH_ONLY は、接続が割り振られる前、または接続の確立直後に、設定できます。アプリケーションは、接続が確立された後、または SQL_ATTR_APPEND_FOR_FETCH_ONLY 属性が設定された後、SQLGetConnectAttr() 関数を使用して SQL_ATTR_APPEND_FOR_FETCH_ONLY 属性を照会できます。
CLI ドライバーが "FOR FETCH ONLY" 節をいつ追加するかを指定するために、代わりに AppendForFetchOnly CLI/ODBC 構成キーワードを設定することもできます。
- SQL_ATTR_ASYNC_ENABLE
- 指定された接続でのステートメントの実行が非同期であるかどうかを示す 32 ビット整数値。
- SQL_ASYNC_ENABLE_OFF (デフォルト): 非同期のステートメント実行を使用不可にします。
- SQL_ASYNC_ENABLE_ON: 非同期のステートメント実行を使用可能にします。
この属性は、InfoType 引数の値 SQL_ASYNC_MODE が指定されて呼び出されたSQLGetInfo()関数が、SQL_AM_CONNECTION または SQL_AM_STATEMENT を返すときに設定できます。
ステートメントで関数が非同期に呼び出されるときには、値 SQL_ASYNC_ENABLE_ON が設定されている接続の同じステートメント・ハンドルで以下の関数のみを実行できます。- 現在実行中の元の関数。
- SQLAllocHandle() 関数。
- SQLCancel() 関数。
- SQLGetDiagField() 関数。
- SQLGetDiagRec() 関数。
以下の関数は非同期で実行できます。- SQLBulkOperations()
- SQLColAttribute()
- SQLColumnPrivileges()
- SQLColumns()
- SQLDescribeCol()
- SQLDescribeParam()
- SQLExecDirect()
- SQLExecute()
- SQLExtendedFetch()
- SQLExtendedPrepare()
- SQLFetch()
- SQLFetchScroll()
- SQLForeignKeys()
- SQLGetData()
- SQLGetLength()
- SQLGetPosition()
- SQLMoreResults()
- SQLNumResultCols()
- SQLParamData()
- SQLPrepare()
- SQLPrimaryKeys()
- SQLProcedureColumns()
- SQLProcedures()
- SQLRowCount()
- SQLSetPos()
- SQLSpecialColumns()
- SQLStatistics()
- SQLTablePrivileges()
- SQLTables()
注: Unicode 等価関数も非同期で呼び出すことができます。 - SQL_ATTR_AUTO_IPD
- SQLPrepare() 呼び出しの後で IPD の自動移植をサポートするかどうかを指定する 32 ビットの符号なしの読み取り専用整数値。
- SQL_TRUE = SQLPrepare() 呼び出し後の IPD の自動移植がサーバーによりサポートされています。
- SQL_FALSE = SQLPrepare() 呼び出し後の IPD の自動移植はサーバーによりサポートされていません。準備状態のステートメントをサポートしないサーバーでは、 IPD を自動的に移植することはできません。
SQL_ATTR_AUTO_IPD 接続属性に SQL_TRUE が戻される場合は、 接続属性 SQL_ATTR_ENABLE_AUTO_IPD を設定して、 IPD 自動移植のオン/オフを切り換えることができます。 SQL_ATTR_AUTO_IPD が SQL_FALSE の場合、 SQL_ATTR_ENABLE_AUTO_IPD を SQL_TRUE に設定することはできません。
SQL_ATTR_ENABLE_AUTO_IPD のデフォルト値は、 SQL_ATTR_AUTO_IPD の値と等しくなります。
この接続属性は、SQLGetConnectAttr() によって戻せますが、 SQLSetConnectAttr() で設定することはできません。
- SQL_ATTR_AUTOCOMMIT
- 自動コミット・モードが有効であるかどうかを指定する 32 ビットの符号なし整数値。値は以下のとおりです。
- SQL_AUTOCOMMIT_OFF: 自動コミット・モードは無効です。 アプリケーションは、SQLEndTran() 関数呼び出しを使用して、トランザクションを明示的にコミットまたはロールバックする必要があります。
- SQL_AUTOCOMMIT_ON (デフォルト): 自動コミット・モードは有効です。
CLI ドライバーは、デフォルトでは自動コミット・モードで作動します。各 SQL ステートメントは、暗黙コミットされます。照会ではない各ステートメントは、ステートメントが正常に実行された直後にコミットされるか、障害が発生した場合にはロールバックされます。
各照会は、関連付けられているカーソルがクローズするとすぐにコミットされます。
調整された分散作業単位 (XA) 接続の場合、 デフォルト値は SQL_AUTOCOMMIT_OFF になります。
- SQL_AUTOCOMMIT_DEFERRED: 自動コミット・モードは有効ですが、COMMIT ステートメントはすぐに送信されません。 自動コミット・モードは、後続の SQL ステートメントに対して有効です。SQL_AUTOCOMMIT_DEFERRED 値を設定すると、後続の SQL ステートメントのうち最初のものが現行トランザクションの一部として処理されます。
SQL_AUTOCOMMIT_ON 値が設定されると、すぐに CLI ドライバーが COMMIT ステートメントを発行し、後続の SQL ステートメントに対して自動コミット・モードが有効になります。 SQL_AUTOCOMMIT_ON を設定した各 SQL ステートメントの実行後に暗黙的な COMMIT ステートメントを別個にデータベース・サーバーに送信すると、アプリケーションのパフォーマンスに悪影響を与える可能性があります。
しかし、SQL_AUTOCOMMIT_DEFERRED 設定では、CLI ドライバーが、アプリケーションによって発行された次の SQL ステートメントに COMMIT ステートメントをチェーニングします。 したがって、COMMIT ステートメントはデータベース・サーバーに別個に送信されず、アプリケーション・パフォーマンスに対する悪影響は回避されます。データベース・サーバーのリソースは、後続の SQL ステートメントの実行が完了するまで解放されません。重要: SQL_AUTOCOMMIT_DEFERRED 設定の動作は、SQL_AUTOCOMMIT_ON 設定と対比した場合、結果セットを返す SELECT ステートメントおよび CALL ステートメントに関して異なります。 SELECT ステートメントまたは CALL ステートメントより前に SQL_AUTOCOMMIT_DEFERRED 値を設定すると、SELECT ステートメントまたは CALL ステートメントに関して完全な結果セットがクライアントに返されて、カーソルがクローズされるまでは、すべてのそれ以前の SQL ステートメントはコミットされません。 SQL_AUTOCOMMIT_DEFERRED 設定は、ネットワーク・フローを削減することにより、パフォーマンスを向上できます。しかし、サーバーで大量のデータが操作されている場合、サーバー・リソースは後続の SQL ステートメントが完了するまでロックされます。 - SQL_ATTR_CACHE_USRLIBL
- SQL_ATTR_CACHE_USRLIBL 属性は、ユーザー・ライブラリー・リスト (*USRLIBL) の値をキャッシュに入れるかどうかを指定します。SQL_ATTR_CACHE_USRLIBL 属性には、以下のいずれかの値を指定します。
- SQL_ATTR_CACHE_USRLIBL_YES (デフォルト): *USRLIBL の値をキャッシュに入れるように指定します。サーバーから *USRLIBL の値が取得されると、同じ接続ハンドルのすべてのカタログ関数呼び出しに同じ *USRLIBL の値が使用されます。
- SQL_ATTR_CACHE_USRLIBL_NO: *USRLIBL の値をキャッシュに入れないように指定します。*USRLIBL の値をスキーマ・リストに指定すると、カタログ関数が呼び出されたときに必ず、現在の *USRLIBL の値が取得されます。カタログ関数を呼び出すときには必ず、データベース・サーバー上のメタデータ・プロシージャーを追加で呼び出す必要があります。
- SQL_ATTR_CACHE_USRLIBL_REFRESH: 現在キャッシュに入れられている *USRLIBL の値を削除するように指定します。これにより、カタログ関数の次回呼び出し時には、現在の *USRLIBL の値が取得され、キャッシュに入れられます。
SQL_ATTR_CACHE_USRLIBL 属性は、DB2 for i サーバーとともに使用する場合にのみ有効です。
- SQL_ATTR_CLIENT_CODEPAGE
- ユーザーが CLI アプリケーションから接続レベル・コード・ページを指定できるようにする接続レベル属性値。この属性を指定すると、環境レベルのデフォルト・コード・ページ設定値がオーバーライドされます。
例 1: このデータベース接続が使用するコード・ページを設定する
Unicode = 1208; cliRC = SQLSetConnectAttr(hdbc, SQL_ATTR_CLIENT_CODEPAGE, (SQLPOINTER)&unicode, SQL_NTS); char *connStr = "DSN=EBCDICDB;"; cliRC = SQLDriverConnect (hdbc, (SQLHWND)NULL, connStr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT);
例 2: SQL_ATTR_CLIENT_CODEPAGE の現行値を取得する
cliRC = SQLConnect(hdbc, (SQLCHAR *)"SAMPLE", SQL_NTS, (SQLCHAR *)"USER1", SQL_NTS, (SQLCHAR *)"PASSWD1", SQL_NTS); cliRC = SQLGetConnectAttr(hdbc, SQL_ATTR_CLIENT_CODEPAGE, &codePage, 0, NULL);
- SQL_ATTR_CLIENT_LOB_BUFFERING
- バインドされていない LOB 列について、 LOB ロケーターまたはその基になる LOB データが結果セットに入れて戻されるかどうかを指定します。 デフォルトでは、ロケーターが戻されます。 バインドされていない LOB をアプリケーションがフェッチしてから、 その基になる LOB データを取り出すことが通常必要になるのであれば、 初めから LOB データを取り出すようにすることによって、 アプリケーションのパフォーマンスが改善されることがあります。 そのようにするなら、同期待機数やネットワーク・フローが少なくなります。 この属性に指定可能な値は、以下のとおりです。
- SQL_CLIENTLOB_USE_LOCATORS (デフォルト) - LOB ロケーターが戻されます。
- SQL_CLIENTLOB_BUFFER_UNBOUND_LOBS - 実際の LOB データが戻されます。
- SQL_ATTR_CLIENT_TIME_ZONE
- タイム・ゾーン情報が含まれる、±hh:mm の形式でのヌル終了文字ストリング。この属性を指定すると、クライアント・ホストのデフォルトのオペレーティング・システム・タイム・ゾーン値がオーバーライドされます。
- SQL_ATTR_COLUMNWISE_MRI
- DB2 for z/OS サーバーに接続されている CLI アプリケーションが配列入力チェーニングを INSERT および MERGE 操作の列方向配列入力に変換できるようにする 32 ビットの符号なし整数。SQL_ATTR_COLUMNWISE_MRI 属性に指定できる値は、SQL_COLUMNWISE_MRI_OFF および SQL_COLUMNWISE_MRI_ON です。
- SQL_COLUMNWISE_MRI_OFF (デフォルト): CLI ドライバーは、チェーニング・データを列方向配列入力に変換しません。
- SQL_COLUMNWISE_MRI_ON: CLI ドライバーは、配列入力チェーニングを列方向配列入力に変換します。DB2 for z/OS の複数行挿入 (MRI) フィーチャーは、データが列方向配列の形式であることを想定します。アプリケーションが配列入力チェーニングを使用している場合、この変換によって、SQLExecute () を呼び出すたびにデータが圧縮された配列の形式で送信されるため、アプリケーションのパフォーマンスを最適化するのに役立ちます。 配列入力チェーニングについて詳しくは、SQL_ATTR_CHAINING_BEGIN を参照してください。
DB2 for z/OS サーバーで使用するために SQL_ATTR_COLUMNWISE_MRI 属性を指定できます。 DB2 for z/OS 以外のサーバーに対する接続では、CLI ドライバーがチェーニング・データを行方向配列入力に自動的に変換します。
次の場合には、変換は実行されません。- パラメーターを SQL_CLOB、SQL_BLOB、
SQL_LONGVARBINARY、SQL_LONGVARGRAPHIC、
SQL_DBCLOB、SQL_XML などの LOB データ・タイプにバインドする場合。 - パラメーターが SQLPutData() 関数および SQLParamData() 関数の呼び出しを必要とする MERGE 操作または INSERT 操作で SQL_DATA_AT_EXEC 引数にバインドされている場合。
- 内部バッファー内ですべてのアプリケーション・データを格納するためのスペースを利用できない場合。
- SQL_ATTR_COMMITONEOF
- SQL_ATTR_COMMITONEOF 属性は、結果セット全体および EOF マーカーが取得された直後に、CLI ドライバーで COMMIT ステートメントを暗黙的に実行するかどうかを指定します。SQL_ATTR_COMMITONEOF 属性には、以下のいずれかの値を指定できます。
- SQL_COMMITONEOF_ON: 結果セット全体および EOF マーカーが取得された後、COMMIT ステートメントを暗黙的に実行します。DB2 for z/OS バージョン 9 以降のサーバーに接続する場合にのみ、SQL_COMMITONEOF_ON の値がデフォルトになります。
- SQL_COMMITONEOF_OFF: 結果セット全体および EOF マーカーが取得された後、COMMIT ステートメントを暗黙的に実行しません。カーソルを閉じてリソースを解放するには、明示的に SQLFreeStmt() 関数を呼び出す必要があります。DB2 for z/OSバージョン 9 およびバージョン 9 以降のデータベース・サーバーに接続する場合を除き、SQL_COMMITONEOF_OFF の値がデフォルトになります。
SQL_COMMITONEOF_ON 属性を使用可能にするには、以下の条件を満たしていることを確認する必要があります。- 自動コミット・モードが使用可能である。
- カーソルが読み取り専用および前方スクロールである。
- SQL_ATTR_EARLYCLOSE ステートメント属性が SQL_EARLYCLOSE_ON (デフォルト) に設定されている。
DB2 for z/OS バージョン 9 以降のサーバーへ接続する場合は、デフォルト値が SQL_COMMITONEOF_ON になります。アプリケーションが、SQL_EARLYCLOSE_OFF ステートメント属性を明示的に設定しているのに、SQL_COMMITONEOF_ON 接続属性を指定していない場合は、CLI ドライバーが、DB2 for z/OS バージョン 9 以降のサーバーへの接続時に、接続属性を SQL_COMMITONEOF_OFF の値にサイレントに変更します。ただし、アプリケーションが明示的に以下の属性を同時に設定すると、CLI0126E エラーが返されます。- SQL_ATTR_COMMITONEOF ステートメント属性を SQL_COMMITONEOF_ON に設定。
- SQL_ATTR_EARLYCLOSE ステートメント属性を SQL_EARLYCLOSE_OFF に設定。
注: この属性を使用しても、SQLFreeStmt() 関数への必要な呼び出しを置き換えることはありません。 - SQL_ATTR_CONCURRENT_ACCESS_RESOLUTION
- ステートメント・レベルで使用する並行アクセス解決方法を指定する 32 ビット整数値。 SQL_ATTR_CONCURRENT_ACCESS_RESOLUTION 属性設定は、カーソル固定 (CS) スキャンに対して指定されているデフォルト動作をオーバーライドします。
- 0: 設定なし。クライアントは準備オプションを提供しません。
- 1: Currently Committed セマンティクスを使用します。 すべての準備ステートメントで、CLI ドライバーが Currently Committed セマンティクスを指定します。 この値は、データが更新または削除される際に、データベース・マネージャーが該当するスキャンに対してデータの現在コミット済みバージョンを使用することを意味します。 コミットされていない挿入行はスキップされます。 設定値 1 は、分離レベルがカーソル固定または読み取り固定の場合に適用され (読み取り固定の場合はコミットされていない挿入のみをスキップ)、それ以外の場合は無視されます。 該当するスキャンには、読み取り専用スキャン (読み取り専用ステートメントの一部、または読み取り専用ではないステートメントの一部である場合がある) が含まれます。レジストリー変数 DB2_EVALUNCOMMITTED、DB2_SKIPDELETED、および DB2_SKIPINSERTED の設定は、Currently Committed セマンティクスを使用するスキャンには適用されません。 ただし、これらのレジストリー変数の設定は、Currently Committed セマンティクスを使用しないスキャンには引き続き適用されます。
- 2: 結果を待機します。すべての準備ステートメントで、CLI ドライバーが wait for outcome 節を指定します。 カーソル固定以上の分離レベルのスキャンは、データが更新または削除される際に、コミットまたはロールバックを待機します。 挿入されている行はスキップされません。 レジストリー変数 DB2_EVALUNCOMMITTED、DB2_SKIPDELETED、および DB2_SKIPINSERTED の設定は、適用されなくなりました。
- 3: ロックされたデータをスキップします。すべての準備ステートメントで、CLI ドライバーが skip locked data 節を指定します。 Currently Committed セマンティクスが使用され、挿入されている行はスキップされます。 オプション 3 は、DB2 for Linux, UNIX, and Windows サーバーではサポートされません。 指定されていても、オプション 3 の設定は無視されます。
DB2 for Linux, UNIX, and Windows サーバーの場合、 SQL_ATTR_CONCURRENT_ACCESS_RESOLUTION 属性を使用して、cur_commit 構成パラメーターによって定義された Currently Committed のデフォルトの動作をオーバーライドします。 DB2 for z/OS サーバーの場合、 SQL_ATTR_CONCURRENT_ACCESS_RESOLUTION 属性を使用して、Currently Committed の動作を有効にします。 この動作を指定することに相当する、DB2 for z/OS サーバーで使用可能なデータベース構成パラメーターはありません。
DB2 for i V6R1 サーバーでは、オプション 0 および 2 のみがサポートされます。DB2 for i V7R1 以降のサーバーでは、SQL_ATTR_CONCURRENT_ACCESS_RESOLUTION 属性の使用可能なすべてのオプションがサポートされます。
ConcurrentAccessResolution CLI/ODBC 構成キーワードの設定は、この動作を指定する別の方法です。
- SQL_ATTR_CONFIG_KEYWORDS_ARRAY_SIZE
- アプリケーションによって設定されるすべての構成キーワードの合計数を示す読み取り専用の整数値。SQL_ATTR_CONFIG_KEYWORDS_ARRAY_SIZE 属性値および SQL_ATTR_CONFIG_KEYWORDS_MAXLEN 属性値は、SQL_CONFIG_KEYWORDS 引数 (InfoType) を指定して SQLGetInfo() 関数を呼び出すために必要なバッファーの最大サイズ (BufferLength) を判別するために必要です。
- SQL_ATTR_CONFIG_KEYWORDS_MAXLEN
- アプリケーションによって設定されるすべての構成キーワード値の組の最大長を示す読み取り専用の整数値。 SQL_ATTR_CONFIG_KEYWORDS_ARRAY_SIZE 属性値および SQL_ATTR_CONFIG_KEYWORDS_MAXLEN 属性値は、SQL_CONFIG_KEYWORDS 引数 (InfoType) を指定して SQLGetInfo() 関数を呼び出すために必要なバッファーの最大サイズ (BufferLength) を判別するために必要です。
- SQL_ATTR_CONN_CONTEXT
- 接続でどのコンテキストを使用するかを示します。
SQLPOINTER は次のいずれかになります。
- コンテキストを設定する、 有効なコンテキスト (sqleBeginCtx() DB2 API によって割り当てられているもの)。
- コンテキストをリセットする NULL ポインター。
この属性を使用できるのは、 アプリケーションが DB2 コンテキスト API を使ってマルチスレッド・アプリケーションを管理している場合だけです。 デフォルト設定では、CLI は接続ハンドルごとに 1 つのコンテキストを割り当て、 実行スレッドが確実に正しいコンテキストにアタッチされるようにすることにより、 コンテキストを管理しています。
コンテキストの詳細については、sqleBeginCtx() API を参照してください。
Informix® データベースにアクセスする場合、この属性はサポートされません。
- SQL_ATTR_CONNECT_NODE
- 接続先の DB2 Enterprise Server Edition データベース・パーティション・サーバーのターゲット論理パーティションを指定する 32 ビット整数。
この属性に指定可能な値は、以下のとおりです。
- 0 から 999 までの整数
- SQL_CONN_CATALOG_NODE
この変数を設定しない場合のデフォルトのターゲット論理ノードは、 マシン上でポート 0 と定義された論理ノードになります。
Informix データベース・サーバーにアクセスする場合、この属性はサポートされません。
また、対応するキーワード、ConnectNode CLI/ODBC 構成キーワードがあります。
- SQL_ATTR_CONNECTION_DEAD
- 接続が依然としてアクティブであるかどうかを示す、読み取り専用 32 ビット整数値。
CLI は、次のいずれかの値を戻します。
- SQL_CD_FALSE - 接続はアクティブのままです。
- SQL_CD_TRUE - エラーが起きたので、サーバーへの接続が終了されました。この場合でもアプリケーションは切断を実行して、すべての CLI リソースの終結処理を行う必要があります。
この属性が主に使用されるのは、接続をプールする前の Microsoft ODBC Driver Manager 3.5x においてです。
- SQL_ATTR_CONNECTION_TIMEOUT
- この接続属性は ODBC で定義されていますが、CLI ではサポートされません。 この属性を設定または取得しようとすると、 SQLSTATE は HYC00 (ドライバーが機能しない) になります。
- SQL_ATTR_CONNECTTYPE
- このアプリケーションを整合分散環境で実行するか、
それとも非整合分散環境で実行するかを指定する 32 ビット整数値。
可能な値は次のとおりです。
- SQL_CONCURRENT_TRANS (デフォルト): アプリケーションを使用して、1 つ以上のデータベースへの並行複数接続を行うことができます。 各接続には、それぞれのコミット範囲があります。 トランザクションの調整の実施は試みられません。 あるアプリケーションが SQLEndTran() 上の環境ハンドルを使用してコミットを発行したが、 すべての接続コミットが成功したわけではない場合、そのアプリケーションはリカバリーを行う必要があります。
- SQL_COORDINATED_TRANS: アプリケーションはコミットを行い、
複数のデータベース接続で調整をロールバックします。
このオプション設定は、組み込み SQL のタイプ 2 CONNECT の指定に対応しています。
SQL_CONCURRENT_TRANS 設定とは対照的に、
アプリケーションは 1 つのデータベースにつき 1 つのオープン接続のみを許可されます。注: この接続タイプでは、 SQL_ATTR_AUTOCOMMIT 接続オプションのデフォルト値である SQL_AUTOCOMMIT_OFF の設定になります。
この属性をデフォルトから変更する場合、接続を環境ハンドルに対して確立する前にこれを設定する必要があります。
環境ハンドルが割り振られたら、必要に応じて、 アプリケーションはできる限り即時に SQLSetEnvAttr() への呼び出しを行って、 この属性を環境属性として設定することが推奨されています。 しかし、ODBC アプリケーションは SQLSetEnvAttr() にアクセスできないので、 個々の接続ハンドルが割り振られてから接続が確立されるまでの間に、SQLSetConnectAttr() を使用してこの属性を設定しなければなりません。
環境ハンドル上のすべての接続の SQL_ATTR_CONNECTTYPE 設定は、同じでなければなりません。 環境では、並行接続と整合接続を混合して使うことはできません。 最初の接続のタイプが決まると、それ以降のすべての接続のタイプはそれに従います。 SQLSetEnvAttr() は、接続アクティブに接続タイプを変更しようとすると、 エラーが返されます。
ConnectType CLI/ODBC 構成キーワードを使用して、このデフォルト接続タイプを設定することもできます。
注: これは、IBM 定義の属性です。 - SQL_ATTR_CURRENT_CATALOG
- データ・ソースで使用するカタログの名前が入れられるヌル終了文字ストリング。
多くの場合、カタログ名はデータベース名と同じです。
この接続属性は、SQLGetConnectAttr() によって戻せますが、 SQLSetConnectAttr() で設定することはできません。 この属性を設定しようとすると、 SQLSTATE は HYC00 (ドライバーが機能しない) になります。
- SQL_ATTR_CURRENT_IMPLICIT_XMLPARSE_OPTION
- CURRENT IMPLICIT XMLPARSE OPTION 特殊レジスターを設定するために使用されるストリング定数である、ヌル終了文字ストリング。
この属性を設定すると、
SET CURRENT IMPLICIT XMLPARSE OPTION SQL ステートメントが発行されます。
この属性が接続の確立前に設定された場合、接続時に SET CURRENT IMPLICIT XMLPARSE OPTION SQL ステートメントが発行されます。
Informix データベース・サーバーにアクセスする場合、この属性はサポートされません。
- SQL_ATTR_CURRENT_PACKAGE_PATH
- 複数のパッケージが構成されている場合にパッケージを解決するために、
DB2 データベース・サーバーが使用するパッケージ修飾子のヌル終了文字ストリング。
この属性を設定すると、データベース・サーバーに接続するたびに "SET CURRENT PACKAGE PATH =
schema1, schema2, ..." ステートメントが発行されます。
この属性は、 CLI アプリケーションではなく ODBC 静的処理アプリケーションで使用することに最も適しています。
Informix データベース・サーバーにアクセスする場合、この属性はサポートされません。
注: これは、IBM 定義の属性です。 - SQL_ATTR_CURRENT_PACKAGE_SET
-
後続の SQL ステートメント用のパッケージの選択に使用されるスキーマ名 (コレクション ID) を示すヌル終了文字ストリング。 この属性を設定すると、 SET CURRENT PACKAGESET SQL ステートメントが発行されます。 この属性が接続以前に設定された場合、 接続時に SET CURRENT PACKAGESET SQL ステートメントが発行されます。
CLI/ODBC アプリケーションは動的 SQL ステートメントを発行します。 この接続属性を使用すると、これらのステートメントの実行に使用される特権をコントロールできます。- CLI/ODBC アプリケーションから SQL ステートメントを実行するときに使用するスキーマを選択します。
- スキーマ内のオブジェクトに必要な特権があることを確認してから、それに従って再バインドします。これは特に、COLLECTION <collid> オプションを使用して、 CLI パッケージ (sqllib/bnd/db2cli.lst) をバインドすることを意味します。 詳細については、BIND コマンドを参照してください。
- CURRENTPACKAGESET オプションをこのスキーマに設定します。
CurrentPackageSet CLI/ODBC 構成キーワード の設定は、スキーマ名を指定する別の方法です。
次のパッケージ・セット名は予約済みです。NULLID、NULLIDR1、NULLIDRA。
SQL_ATTR_REOPT と SQL_ATTR_CURRENT_PACKAGE_SET を同時に指定することはできません。したがって、一方を設定すると、他方は許可されません。
Informix データベース・サーバーにアクセスする場合、この属性はサポートされません。
- SQL_ATTR_CURRENT_SCHEMA
- szSchemaName ポインターを NULL に設定する場合に、
SQLColumns() 呼び出しで CLI が使用するスキーマの名前の入ったヌル終了文字ストリング。
このオプションをリセットするには、 ValuePtr 引数で長さゼロのストリングまたは NULL ポインターを使ってこのオプションを指定します。
このオプションは、アプリケーション開発者が、 SQLColumns() への一般呼び出しを次のようにコーディングしてある場合に便利です。 つまり、スキーマ名で結果セットを制限せず、 結果セットをコード内で孤立させて制約をかける必要がある場合です。
このオプションはいつでも設定することができますが、 szSchemaName ポインターが NULL である次の SQLColumns() 呼び出しで有効になります。
注: SQL_ATTR_CURRENT_SCHEMA 属性は、IBM 定義の属性です。 - SQL_ATTR_DATE_FMT
- SQL_ATTR_DATE_FMT 属性は、日付の形式を指定します。
SQL_ATTR_DATE_FMT 属性には、以下のいずれかの値を指定します。
- SQL_IBMi_FMT_ISO: 国際標準化機構 (ISO) の日付形式 yyyy-mm-dd を使用します。
- SQL_IBMi_FMT_USA: 米国の日付形式 mm/dd/yyyy を使用します。
- SQL_IBMi_FMT_EUR: ヨーロッパの日付形式 dd.mm.yyyy を使用します。
- SQL_IBMi_FMT_JIS: 日本工業規格の日付形式 yyyy-mm-dd を使用します。
- SQL_IBMi_FMT_MDY: 日付形式 mm/dd/yy を使用します。
- SQL_IBMi_FMT_DMY: 日付形式 dd/mm/yy を使用します。
- SQL_IBMi_FMT_YMD: 日付形式 yy/mm/dd を使用します。
- SQL_IBMi_FMT_JUL: ユリウス日付形式 yy/ddd を使用します。
- SQL_IBMi_FMT_JOB: ジョブのデフォルトの日付形式を使用します。
SQL_ATTR_DATE_FMT 属性のデフォルト値は、パッケージに対して指定されている DATETIME バインド・オプションによって決まります。 CLI パッケージに対してデフォルトの DATETIME バインド・オプションが指定されている場合、 SQL_IBMi_FMT_ISO が SQL_ATTR_DATE_FMT 属性のデフォルト値になります。
SQL_ATTR_DATE_FMT 属性は、DB2 for i サーバーとともに使用する場合にのみ、有効です。注: SQL_ATTR_DATE_FMT 属性は、IBM 定義の属性です。 - SQL_ATTR_DATE_SEP
- SQL_ATTR_DATE_SEP 属性は、日付の区切り記号を指定します。
SQL_ATTR_DATE_SEP 属性には、以下のいずれかの値を指定します。
- SQL_SEP_SLASH: 日付区切り記号にスラッシュ ( / ) を使用します。
- SQL_SEP_DASH: 日付区切り記号にダッシュ ( - ) を使用します。
- SQL_SEP_PERIOD: 日付区切り記号にピリオド ( . ) を使用します。
- SQL_SEP_COMMA: 日付区切り記号にコンマ ( , ) を使用します。
- SQL_SEP_BLANK: 日付区切り記号にブランクを使用します。
- SQL_SEP_JOB: ジョブのデフォルトの日付区切り記号を使用します。
SQL_ATTR_DATE_SEP 属性のデフォルト値は、パッケージに対して指定されている DATETIME バインド・オプションによって決まります。 CLI パッケージに対してデフォルトの DATETIME バインド・オプションが指定されている場合、 SQL_SEP_SLASH が SQL_ATTR_DATE_SEP 属性のデフォルト値になります。
SQL_ATTR_DATE_SEP 属性は、SQL_ATTR_DATE_FMT 属性に以下のいずれかの値を設定した後、DB2 for i サーバーで使用する場合にのみ有効です。- SQL_IBMi_FMT_MDY
- SQL_IBMi_FMT_DMY
- SQL_IBMi_FMT_YMD
- SQL_IBMi_FMT_JUL
注: SQL_ATTR_DATE_SEP 属性は、IBM 定義の属性です。 - SQL_ATTR_DB2_APPLICATION_HANDLE
- 接続のアプリケーション・ハンドルを戻すユーザー定義文字ストリング。
アプリケーション・ハンドル全体を含めるだけの大きさがストリングにない場合は、切り捨てられます。
この接続属性は、SQLGetConnectAttr() によって戻せますが、 SQLSetConnectAttr() で設定することはできません。
Informix データベース・サーバーにアクセスする場合、この属性はサポートされません。
- SQL_ATTR_DB2_APPLICATION_ID
- 接続のアプリケーション ID を戻すユーザー定義文字ストリング。
アプリケーション ID 全体を含めるだけの大きさがストリングにない場合は、切り捨てられます。
この接続属性は、SQLGetConnectAttr() によって戻せますが、 SQLSetConnectAttr() で設定することはできません。
Informix データベース・サーバーにアクセスする場合、この属性はサポートされません。
- SQL_ATTR_DB2_SQLERRP
- sqlca の sqlerrp フィールドを収めたヌル終了ストリングを指す sqlpointer。
製品を示す 3 文字の ID の後に、製品のバージョン、リリース、 および修正レベルを示す 5 桁の英数字が続きます。 A-Z の文字はレベル 9 より上の修正レベルを示しています。A は修正レベル 10 を、B は修正レベル 11 を示す、という具合です。 例えば、SQL0907C とは、DB2 バージョン 9 リリース 7 修正レベル 12 を示しています。
SQLCODE がエラー条件を示している場合は、このフィールドはエラーを戻したモジュールを識別します。
接続が正しく完了したときにも、このフィールドが使用されます。
注: これは、IBM 定義の属性です。 - SQL_ATTR_DB2ESTIMATE
- この属性は、DB2 for Linux, UNIX, and Windows 製品では推奨されません。
- SQL_ATTR_DB2EXPLAIN
- サーバーで Explain スナップショットまたは Explain モード情報 (あるいは両方) を生成するかどうかを指定する 32 ビット整数。
指定できる値は以下のとおりです。
- SQL_DB2EXPLAIN_OFF: Explain スナップショット機能も Explain 表オプション機能も無効になっています (SET CURRENT EXPLAIN SNAPSHOT=NO と SET CURRENT EXPLAIN MODE=NO がサーバーに送信されます)。
- SQL_DB2EXPLAIN_SNAPSHOT_ON: Explain スナップショット機能は有効、Explain 表オプション機能は無効になっています (SET CURRENT EXPLAIN SNAPSHOT=YES と SET CURRENT EXPLAIN MODE=NO がサーバーに送信されます)。
- SQL_DB2EXPLAIN_MODE_ON: Explain スナップショット機能は有効、Explain 表オプション機能は無効になっています (SET CURRENT EXPLAIN SNAPSHOT=NO と SET CURRENT EXPLAIN MODE=YES がサーバーに送信されます)。
- SQL_DB2EXPLAIN_SNAPSHOT_MODE_ON: Explain スナップショット機能も Explain 表オプション機能も有効になっています (SET CURRENT EXPLAIN SNAPSHOT=YES と SET CURRENT EXPLAIN MODE=YES がサーバーに送信されます)。
Explain 情報を生成する前に、Explain 表を作成する必要があります。
このステートメントはトランザクションに制御されませんし、ROLLBACK の影響も受けません。 新規の SQL_ATTR_DB2EXPLAIN 設定は、この接続の次のステートメント準備で有効になります。
現在の許可 ID に、EXPLAIN 表の INSERT 特権が必要です。
DB2Explain CLI/ODBC 構成キーワードを使用してデフォルト値を設定することもできます。
Informix データベース・サーバーにアクセスする場合、この属性はサポートされません。
注: これは、IBM 定義の属性です。 - SQL_ATTR_DBC_SYS_NAMING
- PTF SI46944 適用済みの DB2 for i V7R1 以降のサーバーに接続する際にシステム命名モードと SQL 命名モードのうちのどちらが使用されるかを指定する 32 ビットの整数。
可能な値は、以下のとおりです。
- SQL_TRUE: DB2 for i システム命名モードが使用されます。 ファイルは、スラッシュ (/) 区切り文字を使って修飾されます。 修飾されていないファイルは、ジョブ用のライブラリー・リストを使って解決されます。
- SQL_FALSE: SQL 命名モード (デフォルト値)。 ファイルは、ピリオド (.) 区切り文字を使って修飾されます。 修飾されていないファイルは、デフォルト・ライブラリーまたは現在のユーザー ID を使って解決されます。
cliRC = SQLSetConnectAttr(hdbc, SQL_ATTR_DBC_SYS_NAMING , (SQLPOINTER)SQL_TRUE, SQL_NTS);
注: これは、PTF SI46944 適用済みの DB2 for i V7R1 以降のサーバーに接続する際にのみ適用可能な IBM 定義の属性です。 - SQL_ATTR_DECFLOAT_ROUNDING_MODE
-
10 進数浮動小数点丸めモードは、DECFLOAT の変数または列に入っている値の桁数が DECFLOAT データ・タイプで許可される桁数を超えている場合に、どのタイプの丸めを使用するかを決定します。 このようなことは、別のタイプから挿入、更新、選択、変換する際、あるいは数学演算の結果として生じることがあります。
SQL_ATTR_DECFLOAT_ROUNDING_MODE の値は、新しい接続の接続属性によって他のモードが指定されていない場合に、その新しい接続で使用される 10 進数浮動小数点丸めモードを決定します。指定されたどの接続に対しても、CLI および DB2 の両方が、その接続の一部として開始されるすべてのアクションで、同じ 10 進数浮動小数点丸めモードを使用します。
アプリケーションが DB2 for Linux, UNIX, and Windows バージョン 9.5 サーバーに接続する場合は、データベース・クライアントの 10 進数浮動小数点丸めモードを、サーバーで設定されているのと同じモードに設定する必要があります。クライアントの 10 進数浮動小数点丸めモードを、データベース・サーバーで設定されている 10 進数浮動小数点丸めモードとは異なる値に設定していると、接続時にデータベース・サーバーから SQL0713N が戻されます。
これらの 10 進数浮動小数点丸めモードに対応する設定値は、次のとおり。
- 0 = Half even (デフォルト)
- 1 = Half up
- 2 = Down
- 3 = Ceiling
- 4 = Floor
各モードは、次のとおりです。
- Half even (デフォルト)
- このモードでは、CLI および DB2 は、ターゲット変数に収まり、元の値に最も近似の数値を使用します。 2 つの数値がほぼ同じ程度の近似値の場合には、偶数であるものを使用します。 このモードは、大量のデータに対して、生じる丸め誤差を最も小さくします。
- Half up
- このモードでは、CLI および DB2 は、ターゲット変数に収まり、元の値に最も近似の数値を使用します。 2 つの数値がほぼ同じ程度の近似値の場合には、元の値よりも大きいものを使用します。
- Down
- このモードでは、CLI および DB2 は、ターゲット変数に収まり、元の値に最も近似で、その絶対値が元の値の絶対値よりも大きくない数値を使用します。 これは、ゼロに向かっての丸め、または負の値の場合の Ceiling の使用、および正の値の場合の Floor の使用とみなすことができます。
- Ceiling
- このモードでは、CLI および DB2 は、ターゲット変数に収まり、元の値より大か等しい数値で最小のものを使用します。
- Floor
- このモードでは、CLI および DB2 は、ターゲット変数に収まり、元の値より小か等しい数値で最大のものを使用します。
Informix データベース・サーバーにアクセスする場合、この属性はサポートされません。
- SQL_ATTR_DECIMAL_SEP
- SQL_ATTR_DECIMAL_SEP 属性は、小数点を指定します。
SQL_ATTR_DECIMAL_SEP 属性には、以下のいずれかの値を指定します。
- SQL_SEP_PERIOD: 小数点にピリオド ( . ) を使用します。
- SQL_SEP_COMMA: 小数点にコンマ ( , ) を使用します。
- SQL_SEP_JOB: ジョブのデフォルトの小数点を使用します。
SQL_ATTR_DECIMAL_SEP 属性のデフォルト値は、パッケージに対して指定した DECDEL バインド・オプションによって決まります。 CLI パッケージに対してデフォルトの DECDEL バインド・オプションを指定した場合は、SQL_SEP_PERIOD が SQL_ATTR_DECIMAL_SEP 属性のデフォルト値になります。
SQL_ATTR_DECIMAL_SEP 属性は、DB2 for i サーバーとともに使用する場合にのみ、有効です。注: SQL_ATTR_DECIMAL_SEP 属性は、IBM 定義の属性です。 - SQL_ATTR_DESCRIBE_CALL
- ストアード・プロシージャー引数がいつ記述されるかを示す 32 ビット整数値。デフォルトでは、CALL ステートメントを準備する際に、CLI は入力パラメーター記述情報を要求しません。
アプリケーションがパラメーターをステートメントに正常にバインドした場合には、
この記述情報は不要になるため、記述情報を要求しないとパフォーマンスが改善されます。
オプションの値は、次のとおりです。
- 1 = SQL_DESCRIBE_CALL_BEFORE。
- -1 = SQL_DESCRIBE_CALL_DEFAULT。
DescribeCall CLI/ODBC 構成キーワードを使用してこの属性を設定することができます。 選択可能なオプションの使用法情報および説明については、キーワードを参照してください。
注: これは、IBM 定義の属性です。 - SQL_ATTR_DESCRIBE_OUTPUT_LEVEL
- 準備要求または記述要求で CLI ドライバーが要求する情報量を制御するヌル終了文字ストリング。
デフォルトでは、サーバーが記述要求を受け取ると、結果セット列に 表 2 のレベル 2 に含まれる情報を戻します。
ただし、アプリケーションがこの情報のすべてを必要としないことも、あるいは追加情報を必要とすることもあります。
SQL_ATTR_DESCRIBE_OUTPUT_LEVEL 属性を、クライアント・アプリケーションの要件に合ったレベルに設定すると、パフォーマンスが改善される可能性があります。なぜなら、クライアントとサーバー間で転送される記述データが、アプリケーションが必要とする最小量に制限されるためです。
SQL_ATTR_DESCRIBE_OUTPUT_LEVEL 設定値が低すぎると、アプリケーションの機能に影響を与えることがあります (アプリケーションの要件によって異なる)。
この場合、記述情報を検索する CLI 関数は失敗しないかもしれませんが、戻される情報は不完全である可能性があります。
SQL_ATTR_DESCRIBE_OUTPUT_LEVEL のサポートされる設定値は、次のとおりです。
- 0 - 記述情報は、クライアント・アプリケーションに戻されません。
- 1 - レベル 1 に分類される記述情報 (表 2 を参照) が、クライアント・アプリケーションに戻されます。
- 2 - (デフォルト) レベル 2 に分類される記述情報 (表 2 を参照) が、クライアント・アプリケーションに戻されます。
- 3 - レベル 3 に分類される記述情報 (表 2 を参照) が、クライアント・アプリケーションに戻されます。
以下の表は、サーバーが準備要求または記述要求を受け取ったときに戻す、記述情報を形成するフィールドをリストします。 これらのフィールドは各レベルにグループ化され、SQL_ATTR_DESCRIBE_OUTPUT_LEVEL 属性が、CLI ドライバーの要求する記述情報のレベルを制御します。
注:- 必ずしもすべての記述情報のレベルが、すべての DB2 サーバーによってサポートされるとは限りません。
以下の DB2 サーバーでは、すべてのレベルの記述情報がサポートされます。
- DB2 for Linux, UNIX, and Windows
- DB2 for z/OS バージョン 8 以降
- DB2 for i バージョン 5 リリース 3 以降
- デフォルトの動作では、最初にデフォルト・レベル 2 を使用して取り出されなかった記述情報をアプリケーションが要求する場合に、CLI はレベルを 3 にプロモートできます。これにより、サーバーに対する 2 つのネットワークの流れが存在する可能性があります。 アプリケーションがこの属性を使用して明示的に記述レベルを設定する場合、プロモーションは行われません。 したがって、この属性を使用して記述レベルを 2 に設定する場合、アプリケーションが拡張情報を求めても、CLI はレベル 3 にプロモートしません。
表 2. 記述情報のレベル レベル 1 レベル 2 レベル 3 SQL_COLUMN_COUNT SQL_COLUMN_LENGTH SQL_COLUMN_NULLABLE SQL_COLUMN_PRECISION SQL_COLUMN_SCALE SQL_DESC_CASE_SENSITIVE SQL_DESC_CONCISE_TYPE SQL_DESC_COUNT SQL_DESC_DISPLAY_SIZE SQL_DESC_FIXED_PREC_SCALE SQL_DESC_LENGTH SQL_DESC_LITERAL_PREFIX SQL_DESC_LITERAL_SUFFIX SQL_DESC_NULLABLE SQL_DESC_OCTET_LENGTH SQL_DESC_PRECISION SQL_DESC_SEARCHABLE SQL_DESC_SCALE SQL_DESC_TYPE SQL_DESC_UNSIGNED
all fields of level 1 and: SQL_COLUMN_NAME SQL_DESC_DISTINCT_TYPE SQL_DESC_LABEL SQL_DESC_LOCAL_TYPE_NAME SQL_DESC_NAME SQL_DESC_REFERENCE_TYPE SQL_DESC_STRUCTURED_TYPE SQL_DESC_TYPE_NAME SQL_DESC_UNNAMED SQL_DESC_USER_DEFINED_ TYPE_CODE SQL_DESC_USER_TYPE
all fields of levels 1 and 2 and: SQL_DESC_AUTO_UNIQUE_VALUE SQL_DESC_BASE_COLUMN_NAME SQL_DESC_BASE_TABLE_NAME SQL_DESC_CATALOG_NAME SQL_DESC_IDENTITY_VALUE SQL_DESC_SCHEMA_NAME SQL_DESC_TABLE_NAME SQL_DESC_UPDATABLE
DescribeOutputLevel CLI/ODBC 構成キーワードの設定は、この動作を指定する別の方法です。
- SQL_ATTR_DETECT_READ_ONLY_TXN
- SQL_ATTR_DETECT_READ_ONLY_TXN 属性は、自動クライアント・リルート・フィーチャーが有効になっている場合に、失敗したステートメントがトランザクション内の最初の SQL ステートメントでなくても、接続を新規メンバーにシームレスにフェイルオーバーできるかどうかを指定します。この属性は、
次のサーバーに接続している場合に指定できます。
- DB2® for Linux, UNIX, and Windows バージョン 10.5 フィックスパック 4 以降のフィックスパック。
- 自動クライアント・リルート・フィーチャーと Sysplex ワークロード・バランシング・フィーチャーが有効になっている、新機能モード (NFM) の DB2 for z/OS® バージョン 11。
- SQL_DETECT_READ_ONLY_TXN_ENABLE - 自動クライアント・リルート・フィーチャーが有効になっている場合に、失敗したステートメントがトランザクション内の最初の SQL ステートメントでなくても、接続を新規メンバーにシームレスにフェイルオーバーできることを示します。この設定にすると、接続されているサーバーは、特殊レジスターおよびセッション・グローバル変数が変更されるたびにそれらの最新の値を返します。
- SQL_DETECT_READ_ONLY_TXN_DISABLE(デフォルト) - このフィーチャーを無効にします。
- SQL_ATTR_ENLIST_IN_DTC
- 以下のいずれかの値 SQLPOINTER。
- NULL 以外のトランザクション・ポインター: アプリケーションは、接続の状態を非分散トランザクション状態から分散トランザクション状態に変更するよう、CLI に要求します。 接続の参加は、分散トランザクション・コーディネーター (DTC) によって行われます。
- NULL: アプリケーションは、接続の状態を分散トランザクション状態から非分散トランザクション状態に変更するよう、CLI に要求します。
この属性は、Microsoft Transaction Server (MTS) との接続の参加、 または参加の取り止めを行うために、MTS の環境でのみ使用されます。
この属性に非 NULL トランザクション・ポインターを指定して使用すると、 直前のトランザクションは終了して、新しいトランザクションが開始されたものと想定されます。 非 NULL ポインターを指定してこの API を呼び出す前に、 アプリケーションは ITransaction メンバー関数 Endtransaction を呼び出す必要があります。 そうしないと、直前のトランザクションが打ち切られてしまいます。 アプリケーションは、同じトランザクション・ポインターを使用して複数の接続を参加させることができます。注: この接続属性は、トランザクションごとに MTS が自動的に指定するものであって、 ユーザー・アプリケーションがコーディングするものではありません。CLI/ODBC アプリケーションは、同一のトランザクションに参加する 2 つの異なる接続上で、 同一のデータベースに対して複数の SQL ステートメントを並行に実行することはできません。 - SQL_ATTR_EXTENDED_INDICATORS
- 32 ビットの整数で、ユーザーはこの値を使用すると、サポート対象のサーバーから拡張標識フィーチャーを使用できます。
拡張標識がサポートされていないデータ・サーバーに対してこの属性をユーザーが設定しようとすると、CLI アプリケーションに該当するエラーが戻ります。
この属性で指定できる値は次のとおりです。
- SQL_EXTENDED_INDICATOR_ENABLE: この場合、ユーザーは SQLBindParameter() / SQLExtendedBind() メソッドに SQL_UNASSIGNED と SQL_DEFAULT_PARAM を示す値を指定できます。
- SQL_EXTENDED_INDICATOR_NOT_SET (デフォルト): このフィーチャーはデフォルトで使用不可になっています。 SQL_ATTR_EXTENDED_INDICATORS を使用してこのフィーチャーを使用可能にする前に SQL_UNASSIGNED と SQL_DEFAULT_PARAM が使用されると、ユーザーは InvalidArgument 値エラー CLI0124E を受け取ります。
- 以下の IBM Data Server 製品では、拡張標識がサポートされます。
- DB2 for Linux, UNIX, and Windows データベース・サーバー。
- DB2 for z/OS バージョン 10 サーバー。
- DB2 for i V7.1 データ・サーバー。
- SQL_ATTR_FET_BUF_SIZE
- アプリケーションが、デフォルトの照会ブロック・サイズを 64 K から 256 K の範囲の最適値に設定できるようにするための接続レベル属性。 この属性は、接続が作成される前に設定してください。また CLI は、db2cli.ini レベルのキーワード FET_BUF_SIZE も提供します。このキーワードは、db2cli.ini ファイルおよび接続ストリングに設定できます。
- それに対応する db2dsdriver.cfg キーワードの FetchBufferSize (db2dsdriver.cfg ファイルで設定可能) も使用できます。
- SQL_ATTR_FORCE_ROLLBACK
- DB2 for z/OS サーバーへの接続に対して、実行時データ・フローの SQLEndTran() 関数への呼び出しを可能にする 32 ビットの符号なし整数値。
実行時データ・フローにおいて、ユーザーのアプリケーションで SQL_ROLLBACK を CompletionType と指定したSQLEndTran() 関数を呼び出すには、StreamPutData 構成キーワードを 1 に設定し、SQL_ATTR_FORCE_ROLLBACK 接続属性も設定する必要があります。
DB2 for z/OS サーバーではないデータベース・サーバーへの接続では、CLI0150E エラー・メッセージが戻されます。
注: これは、IBM 定義の属性です。 - SQL_ATTR_FREE_LOCATORS_ON_FETCH
- LOB ロケーターが COMMIT の発行時ではなく、SQLFetch() の実行時に解放されるかどうかを指定する Boolean 属性。
この属性を 1 (true) に設定すると、アプリケーションが LOB 列を SQLBindCol() (またはそれに相当する記述子 API) にバインドしないで LOB データをフェッチするときに内部的に使用されるロケーターが解放されます。
その場合も、アプリケーションに明示的に戻されるロケーターは、アプリケーションによって解放する必要があります。
この属性値は、アプリケーションが SQLCODE = -429 (ロケーターがない) を受け取る事態を避けるために使用できます。
この属性のデフォルトは 0 (false) です。
注: これは、IBM 定義の属性です。
- SQL_ATTR_FREE_MEMORY_ON_STMTCLOSE
- SQLFreeStmt() 関数で指定された SQL_CLOSE アクションが CLI ドライバーによる大きなメモリーの割り振りを解放するかどうかを指定する接続レベル属性。
CLI ドライバーは、以下のシナリオで大きなメモリーを割り振ります。
- Dynamic Data Format フィーチャーをサポートしないサーバーから LOB 列をクライアントがフェッチする場合。
- AllowInterleavedGetData キーワードを設定した SQLGetData() 関数をクライアントが呼び出す場合。
- SQL_FREE_MEMORY_ON_STMTCLOSE_NO: デフォルト値。 指定されたシナリオの CLI ドライバーによるメモリーの割り振りは、SQL_CLOSE アクションが実行された時点で解放されません。
- SQL_FREE_MEMORY_ON_STMTCLOSE_YES: 指定されたシナリオの CLI ドライバーによるメモリーの割り振りは SQL_CLOSE アクションが実行されたときに解放されます。
cliRC = SQLSetConnectAttr(hdbc, SQL_ATTR_FREE_MEMORY_ON_STMTCLOSE , (SQLPOINTER)SQL_FREE_MEMORY_ON_STMTCLOSE_YES, SQL_IS_INTEGER);
注: これは、IBM 定義の属性です。 - SQL_ATTR_GET_LATEST_MEMBER
- 論理接続のためにクライアントによって使用された最新の TCP/IP アドレスを CLI アプリケーションが取り出すことを可能にする接続レベル属性。
ワークロード・バランシング (WLB) フィーチャーが有効な場合、最後のメンバー・アドレスをメンバー・アドレス、1 次グループ・アドレス、または代替グループ・アドレスとすることができます。 WLB が有効でない場合、SQL_ATTR_GET_LATEST_MEMBER 属性は、論理接続の確立に使用されている DSN 情報を返します。 返された DSN 情報は、1 次グループ・アドレスまたは代替グループ・アドレスとすることができます。 DSN 情報は、ローカル db2dsdriver.cfg ファイル、または、db2dsdriver.cfg ファイルが使用されていない場合はノード・ディレクトリーから取得されます。 代替グループ・アドレスは、ローカル db2dsdriver.cfg ファイルから取得されます。 戻り値は IP アドレスとポートであり、ポート番号またはサービス名として表されます。 戻り値の形式は、"hostname:port" です。
データベース接続を確立する前にこの属性を使用しようとすると、CLI0106E エラー・メッセージが戻されます。
- SQL_ATTR_GET_LATEST_MEMBER_NAME
- 論理接続のためにクライアントによって使用されている最新のメンバー名を CLI アプリケーションが取り出すことを可能にする接続レベル属性。
SQL_ATTR_GET_LATEST_MEMBER_NAME 属性は、db2dsdriver.cfg ファイルでクライアント・アフィニティー・フィーチャーが有効な場合にのみ指定できます。
メンバー名情報は、ローカルの db2dsdriver.cfg ファイルの <alternateserverlist> サブセクションから取得されます。
- SQL_ATTR_INFO_ACCTSTR
- SQL_ATTR_INFO_ACCTSTR 属性は、データベースに送信されるクライアント・アカウンティング・ストリングを設定するために使用します。 CLI ドライバーにより、SQL_ATTR_INFO_ACCTSTR 属性の文字数は 255 文字に制限されます。データベース・サーバーにより、SQL_ATTR_INFO_ACCTSTR 属性値の長さに関する別の制限が適用され、値が切り捨てられることがあります。以下の条件に注意してください。
- DB2 for z/OS バージョン 11 サーバー (新機能モード (NFM)) では、CURRENT CLIENT_ACCTNG 特殊レジスターの長さは最大 255 文字までサポートされます。
- DB2 for z/OS サーバーでは、SQL_ATTR_INFO_ACCTSTR 属性値に指定された末尾スペースは削除されます。
- DB2 for z/OS バージョン 10 以前のサーバーでサポートされる長さは、最大 200 文字です。
- CLI アプリケーションで、SQL_ATTR_INFO_ACCTSTR 属性を DB2 for i V6R1 以降のサーバーに設定できます。DB2 for i サーバーがサポートするのは、最大 255 文字までの長さです。
DB2 for z/OS サーバーへの接続については、自動クライアント・リルート (ACR) フィーチャーおよびワークロード・バランス (WLB) フィーチャーが有効になっている場合、接続フェイルオーバーの発生時に SQL_ATTR_INFO_ACCTSTR 属性は再生されます。
以下の条件を満たしている場合、DB2 for z/OS サーバー上のクライアントによって設定されたデフォルト値を取得できます。- クライアント・アカウンティングのレジストリー値を明示的に設定していない。
- enableDefaultClientInfo IBM Data Server Driver 構成キーワードが True に設定されている。
SQL_ATTR_INFO_ACCTSTR 属性は、IBM 定義の属性です。
- SQL_ATTR_INFO_APPLNAME
- SQL_ATTR_INFO_APPLNAME 属性は、データベースに送信されるクライアント・アプリケーション名を設定するために使用します。CLI ドライバーにより、SQL_ATTR_INFO_APPLNAME 属性の文字数は 255 文字に制限されます。データベース・サーバーにより、SQL_ATTR_INFO_APPLNAME 属性値の長さに関する別の制限が適用され、値が切り捨てられることがあります。以下の条件に注意してください。
- DB2 for z/OS バージョン 11 サーバー (新機能モード (NFM)) では、CURRENT CLIENT_APPLNAME 特殊レジスターの長さは最大 255 文字までサポートされます。
- DB2 for z/OS サーバーでは、SQL_ATTR_INFO_APPLNAME 属性値に指定された末尾スペースは削除されます。
- DB2 for z/OS バージョン 10 以前のサーバーでサポートされる長さは、最大 32 文字です。
- CLI アプリケーションで、SQL_ATTR_INFO_APPLNAME 属性を DB2 for i V6R1 以降のサーバーに設定できます。DB2 for i サーバーがサポートするのは、最大 255 文字までの長さです。
DB2 for z/OS サーバーへの接続については、自動クライアント・リルート (ACR) フィーチャーおよびワークロード・バランス (WLB) フィーチャーが有効になっている場合、接続フェイルオーバーの発生時に SQL_ATTR_INFO_APPLNAME 属性は再生されます。
以下の条件を満たしている場合、DB2 for z/OS サーバー上のクライアントによって設定されたデフォルト値を取得できます。- クライアント・アプリケーション名のレジストリー値を明示的に設定していない。
- enableDefaultClientInfo IBM Data Server Driver 構成キーワードが True に設定されている。
クライアント・アプリケーション名を変更し、WLM_SET_CLIENT_INFO プロシージャーを使用してアカウンティング・ストリングを設定すると、サーバーに保管されているアカウンティング・ストリングが、クライアント情報からのアカウンティング・ストリングの値によって更新されます。
SQL_ATTR_INFO_APPLNAME 属性は、IBM 定義の属性です。
- SQL_ATTR_INFO_CRRTKN
- SQL_ATTR_INFO_CRRTKN 属性は、DB2 for z/OS バージョン 11 サーバー (新機能モード (NFM)) に送信されるクライアント相関トークンを設定するために使用します。
拡張クライアント・リルート (ACR) フィーチャーおよびワークロード・バランス (WLB) フィーチャーが有効になっている場合、接続フェイルオーバーの発生時に SQL_ATTR_INFO_CRRTKN 属性は再生されます。SQL_ATTR_INFO_CRRTKN 属性は、以下の条件下で指定できます。
- SQL_ATTR_INFO_CRRTKN 属性は、DB2 for z/OS バージョン 11 サーバー (新機能モード (NFM)) に接続するときに指定できます。
- DB2 for z/OS サーバーでは、SQL_ATTR_INFO_CRRTKN 属性値を使用して、CURRENT CLIENT_CORR_TOKEN 特殊レジスターが設定されます。
- DB2 for z/OS サーバーでは、SQL_ATTR_INFO_CRRTKN 属性値に指定された末尾スペースは削除されます。
- DB2 接続ゲートウェイ・サーバーでは、クライアント相関トークン値のモニターはサポートされません。
- SQL_ATTR_INFO_CRRTKN 属性値は、クライアント・サイドで検証せずにサーバーへ送信されます。
- SQL_ATTR_INFO_CRRTKN 属性に指定する文字ストリングは、ヌル終了である必要があります。
- SQL_ATTR_INFO_CRRTKN 属性には 255 文字の制限があります。
- 自動クライアント・リルート (ACR) フィーチャーおよびワークロード・バランス (WLB) フィーチャーが有効になっている場合、接続フェイルオーバーの発生時に SQL_ATTR_INFO_CRRTKN 属性は再生されます。
デフォルトの SQL_ATTR_INFO_CRRTKN 属性値は、接続時に生成される DRDA® 相関トークンです。データベース・クライアントは一般的に、DRDA 相関トークン値を生成します。ただし、データベース・クライアントが値を生成できない場合は、データベース・サーバーが値を生成します。
以下の条件を満たしている場合、DB2 for z/OS サーバー上のクライアントによって設定されたデフォルト値を取得できます。- クライアント相関トークンのレジストリー値を明示的に設定していない。
- enableDefaultClientInfo IBM Data Server Driver 構成キーワードが True に設定されている。
SQL_ATTR_INFO_CRRTKN 属性は、IBM 定義の属性です。
- SQL_ATTR_INFO_PROGRAMID
- アプリケーションと接続を関連付ける最大長 80 バイトのユーザー定義文字ストリング。
この属性を設定すると、DB2 for z/OS バージョン 8 以降では、動的 SQL ステートメント・キャッシュに挿入されたステートメントにこの ID が関連付けられます。
この属性は、DB2 for z/OS バージョン 8 以降または Informix データベース・サーバー にアクセスする CLI アプリケーションの場合にのみ、サポートされます。
注: SQL_ATTR_INFO_PROGRAMID 属性は、IBM 定義の属性です。 - SQL_ATTR_INFO_PROGRAMNAME
- 長さが 20 バイト以下のヌル終了ユーザー定義文字ストリング。
クライアントで実行されているアプリケーションの名前を指定します。
サーバーとの接続が確立されるより前にこの属性が設定されている場合、 ここに指定される値は実際のクライアント・アプリケーション名をオーバーライドし、 appl_name モニター・エレメントに表示される値になります。 DB2 for z/OS サーバーとの接続では、 この設定値の最初の 12 文字が、 対応する DB2 for z/OS スレッドの CORRELATION IDENTIFIER として使用されます。
注: SQL_ATTR_INFO_PROGRAMNAME 属性は、IBM 定義の属性です。 - SQL_ATTR_INFO_USERID
- SQL_ATTR_INFO_USERID 属性は、データベースに送信されるクライアント・ユーザー ID (アカウンティング・ユーザー ID) を設定するために使用します。SQL_ATTR_INFO_USERID 属性は、識別目的でのみ使用され、認証には使用されません。SQL_ATTR_INFO_USERID 属性を認証ユーザー ID と混同しないでください。
CLI ドライバーにより、SQL_ATTR_INFO_USERID 属性の文字数は 255 文字に制限されます。
データベース・サーバーにより、SQL_ATTR_INFO_USERID 属性値の長さに関する別の制限が適用され、値が切り捨てられることがあります。以下の条件に注意してください。- DB2 for z/OS バージョン 11 サーバー (新機能モード (NFM)) では、CURRENT CLIENT_USERID 特殊レジスターの長さは最大 128 文字までサポートされます。
- DB2 for z/OS サーバーでは、SQL_ATTR_INFO_USERID 属性値に指定された末尾スペースは削除されます。
- DB2 for z/OS バージョン 10 以前のサーバーでサポートされる長さは、最大 16 文字です。
- CLI アプリケーションで、SQL_ATTR_INFO_USERID 属性を DB2 for i V6R1 以降のサーバーに設定できます。DB2 for i サーバーがサポートするのは、最大 255 文字までの長さです。
DB2 for z/OS サーバーへの接続については、自動クライアント・リルート (ACR) フィーチャーおよびワークロード・バランス (WLB) フィーチャーが有効になっている場合、接続フェイルオーバーの発生時に SQL_ATTR_INFO_USERID 属性は再生されます。
以下の条件を満たしている場合、DB2 for z/OS サーバー上のクライアントによって設定されたデフォルト値を取得できます。- クライアント・ユーザー ID (アカウンティング・ユーザー ID) レジストリー値を明示的に設定していません。
- enableDefaultClientInfo IBM データ・サーバー・ドライバー構成キーワードが True に設定されています。
クライアント・ユーザー ID を変更し、WLM_SET_CLIENT_INFO プロシージャーを使用してアカウンティング・ストリングを設定すると、サーバーに保管されているアカウンティング・ストリングが、クライアント情報からのアカウンティング・ストリングの値によって更新されます。
SQL_ATTR_INFO_USERID 属性は、IBM 定義の属性です。
- SQL_ATTR_INFO_WRKSTNNAME
- SQL_ATTR_INFO_WRKSTNNAME 属性は、データベースに送信されるクライアント・ワークステーション名を設定するために使用します。 CLI ドライバーにより、SQL_ATTR_INFO_WRKSTNNAME 属性の文字数は 255 文字に制限されます。データベース・サーバーにより、SQL_ATTR_INFO_WRKSTNNAME 属性値の長さに関する別の制限が適用され、値が切り捨てられることがあります。以下の条件に注意してください。
- DB2 for z/OS バージョン 11 サーバー (新機能モード (NFM)) では、CURRENT CLIENT_WRKSTNNAME 特殊レジスターの長さは最大 255 文字までサポートされます。
- DB2 for z/OS サーバーでは、SQL_ATTR_INFO_WRKSTNNAME 属性値に指定された末尾スペースは削除されます。
- DB2 for z/OS バージョン 10 以前のサーバーでサポートされる長さは、最大 18 文字です。
- CLI アプリケーションで、SQL_ATTR_INFO_WRKSTNNAME 属性を DB2 for i V6R1 以降のサーバーに設定できます。DB2 for i サーバーがサポートするのは、最大 255 文字までの長さです。
SQL_ATTR_INFO_WRKSTNNAME 属性が指定されていない場合、ホスト名からなるデフォルト値が使用されます。ホスト名は、gethostname() 関数を呼び出すことによって取得されます。ホスト名が構成されていない場合、または gethostname() 関数呼び出しでエラーが発生した場合には、SQL_ATTR_INFO_WRKSTNNAME 属性の値はサーバーに送信されません。
DB2 for z/OS サーバーへの接続については、自動クライアント・リルート (ACR) フィーチャーおよびワークロード・バランス (WLB) フィーチャーが有効になっている場合、接続フェイルオーバーの発生時に SQL_ATTR_INFO_WRKSTNNAME 属性は再生されます。
以下の条件を満たしている場合、DB2 for z/OS サーバー上のクライアントによって設定されたデフォルト値を取得できます。- クライアント・ワークステーション名のレジストリー値を明示的に設定していない。
- enableDefaultClientInfo IBM Data Server Driver 構成キーワードが True に設定されている。
SQL_ATTR_INFO_WRKSTNNAME 属性は、IBM 定義の属性です。
- SQL_ATTR_KEEP_DYNAMIC
- KEEPDYNAMIC オプションが有効かどうかを指定する 32 ビット符号なし整数値。
有効な場合、サーバーは、動的に準備されたステートメントを、トランザクション境界を越えて準備済み状態に維持します。
- 0 - KEEPDYNAMIC 機能は利用できません。 CLI パッケージは KEEPDYNAMIC NO オプションを指定してバインドされました。
- 1 - KEEPDYNAMIC 機能を利用できます。 CLI パッケージは KEEPDYNAMIC YES オプションを指定してバインドされました。
この属性が設定されている場合には、 SQL_ATTR_CURRENT_PACKAGE_SET 属性も設定するようお勧めします。
Informix データベース・サーバーにアクセスする場合、この属性はサポートされません。
注: これは、IBM 定義の属性です。 - SQL_ATTR_LOB_CACHE_SIZE
- LOB の最大キャッシュ・サイズ (バイト単位) を指定する、32 ビットの符号なし整数。
デフォルトでは、LOB はキャッシュに入れられません。
詳しい使用情報については、LOBCacheSize CLI/ODBC 構成キーワードを参照してください。
- SQL_ATTR_LOGIN_TIMEOUT
- 試行を終了し通信タイムアウトを生成する前の、サーバーへの接続の確立を試行するときに応答を待機する秒数に相当する 32 ビット整数値。
正の整数を、最高 32 767 まで指定してください。
デフォルト設定の 0 を指定すると、クライアントは無制限に待機できます。
接続タイムアウト値の設定は、ConnectTimeout CLI/ODBC 構成キーワードを使用して行うこともできます。 使用法の情報については、キーワードを参照してください。
- SQL_ATTR_LONGDATA_COMPAT
- 既存のアプリケーションでシームレスにラージ・オブジェクト・データ・タイプにアクセスできるようにするため、文字データ・タイプ、2 バイト文字データ・タイプ、およびバイナリー・ラージ・オブジェクト・データ・タイプを、SQL_LONGVARCHAR、SQL_LONGVARGRAPHIC、または SQL_LONGBINARY として報告するかどうかを指定する 32 ビット整数。オプションの値は、次のとおりです。
- SQL_LD_COMPAT_NO (デフォルト): ラージ・オブジェクト・データ・タイプは、IBM 定義のタイプ (SQL_BLOB、SQL_CLOB、SQL_DBCLOB) で報告されます。
- SQL_LD_COMPAT_YES: IBM ラージ・オブジェクト・データ・タイプ (SQL_BLOB、SQL_CLOB、および SQL_DBCLOB) は、 SQL_LONGVARBINARY、SQL_LONGVARCHAR、および SQL_LONGVARGRAPHIC にマップされます。 SQLGetTypeInfo() は、SQL_LONGVARBINARY SQL_LONGVARCHAR、および SQL_LONGVARGRAPHIC にそれぞれ 1 つの項目を戻します。
注: これは、IBM 定義の属性です。 - SQL_ATTR_MAPCHAR
- SQL_CHAR、SQL_VARCHAR、SQL_LONGVARCHAR に関連したデフォルトの SQL タイプを指定するために使用する 32 ビット整数値。
オプションの値は、次のとおりです。
- SQL_MAPCHAR_DEFAULT (デフォルト): デフォルトの SQL タイプ表記を戻します。
- SQL_MAPCHAR_WCHAR: SQL_WCHAR として SQL_CHAR、SQL_WVARCHAR として SQL_VARCHAR、および SQL_WLONGVARCHAR として SQL_LONGVARCHAR を戻します。
この属性の設定値は、 次の CLI 関数にのみ影響します。- SQLColumns()
- SQLColAttribute()
- SQLDescribeCol()
- SQLDescribeParam()
- SQLGetDescField()
- SQLGetDescRec()
- SQLProcedureColumns()
SQL_CHAR、SQL_VARCHAR、SQL_LONGVARCHAR に関連したデフォルトの SQL タイプの設定は、MapCharToWChar CLI/ODBC 構成キーワードを使用して行うこともできます。
注: これは、IBM 定義の属性です。 - SQL_ATTR_MAXCONN
- SQL_ATTR_MAXCONN 属性は推奨されません。
- SQL_ATTR_MAX_LOB_BLOCK_SIZE
- LOB または XML データ・ブロックの最大サイズを示す 32 ビット符号なし整数。
正の整数を、最高 2 147 483 647 まで指定してください。
デフォルト設定の 0 は、LOB または XML データ・ブロックのデータ・ブロック・サイズに制限がないことを示します。
データ検索時にサーバーは、最大ブロック・サイズに到達する場合でも、現在行に関するすべての情報をクライアントへの応答に含めます。
MaxLOBBlockSize キーワードと db2set レジストリー変数 DB2_MAX_LOB_BLOCK_SIZE の両方が指定されている場合、MaxLOBBlockSize キーワードの値が使用されます。
LOB または XML データ・ブロックの最大サイズを指定するために、代わりに MaxLOBBlockSize CLI/ODBC 構成キーワードを設定することもできます。
- SQL_ATTR_METADATA_ID
- この接続属性は ODBC で定義されていますが、CLI ではサポートされません。 この属性を設定または取得しようとすると、 SQLSTATE は HYC00 (ドライバーが機能しない) になります。
- SQL_ATTR_NETWORK_STATISTICS
- SQL_ATTR_NETWORK_STATISTICS は、CLI が接続のネットワーク統計を収集するかどうかを制御する 32 ビット整数の接続属性です。アプリケーションは、SQLGetDiagField() 関数を呼び出し、DiagIdentifier 引数に対して SQL_DIAG_NETWORK_STATISTICS を指定することで、接続のネットワーク統計を検索できます。
- 指定できる値は以下のとおりです。
- SQL_NETWORK_STATISTICS_OFF (デフォルト)
- 接続のネットワーク統計の収集を無効にします。
- SQL_NETWORK_STATISTICS_ON
- 接続のネットワーク統計の収集を有効にします。
- SQL_NETWORK_STATISTICS_ON_SKIP_NOSERVER
- 接続に対してネットワーク統計の収集を使用可能にすることに加えて、明示的な COMMIT ステートメントや ROLLBACK ステートメントなど、サーバー時間が報告されていないと認識されているネットワーク・フローは省略されます。
サーバー時間が報告されていない要求は、サーバー時間をネットワーク時間から減算する計算が行われる場合、戻り情報の有用性に影響を与えることがあります。 SQL_NETWORK_STATISTICS_ON_SKIP_NOSERVER オプションは、これらの要求を報告される値から除外します。 非チェーンの明示的要求のみ除外されます。 自動コミットおよびチェーニングされた COMMIT ステートメントはスキップされません。
CLI ドライバーは COMMIT および ROLLBACK で報告されるサーバー時間の統計を収集します。 IBM データ・サーバーは、COMMIT および ROLLBACK のサーバー時間を報告するフィーチャーをサポートしている必要があります。
- SQL_ATTR_ODBC_CURSORS
- この接続属性は ODBC で定義されていますが、CLI ではサポートされません。 この属性を設定または取得しようとすると、 SQLSTATE は HYC00 (ドライバーが機能しない) になります。
- SQL_ATTR_OVERRIDE_CHARACTER_CODEPAGE
- SQL_ATTR_OVERRIDE_CHARACTER_CODEPAGE 接続属性を使用すると、CLI アプリケーションでデータベース・コード・ページを指定できます。
このコード・ページは、アプリケーションが存在するデータベース・クライアントで使用可能である必要はありません。
データベース・コード・ページと同じコード・ページを指定すると、アプリケーションは、コード・ページ変換を行わなくても、CHARACTER データ・タイプのデータをフェッチまたは挿入できます。
ステートメント・ハンドルを割り振った後で SQL_ATTR_OVERRIDE_CHARACTER_CODEPAGE 属性を設定すると、CLI0126E エラー (無効な操作) が発生します。 この属性をデータベースでサポートされていない値に設定すると、CLI0210E エラー (不整合なコード・ページ値のエラー) になります。
SQL_ATTR_OVERRIDE_CODEPAGE を SQL_OVERRIDE_CODEPAGE_ON に設定した後で SQL_ATTR_OVERRIDE_CHARACTER_CODEPAGE を設定すると、CLI ドライバーは CLI0126E エラー・メッセージを返します。
バインド・アウト操作の際には、バインド・アウト操作中に取得したデータを保持するのに十分な大きさのバッファーを、CLI アプリケーションによって割り振るようにしてください。スペースが不十分な場合は、CLI0002W エラーが戻されます。
制約事項: SQL_ATTR_OVERRIDE_CHARACTER_CODEPAGE 属性は、DB2 for z/OS データベース・サーバーへの接続に対してのみサポートされます。 - SQL_ATTR_OVERRIDE_CODEPAGE
- SQL_ATTR_OVERRIDE_CODEPAGE 接続属性を使用すると、CLI アプリケーションは、コード・ページ変換を行わずに、CHARACTER データ・タイプまたは GRAPHIC データ・タイプのデータをフェッチまたは挿入できます。
SQL_ATTR_OVERRIDE_CODEPAGE 接続属性には、以下の値を指定できます。
- SQL_OVERRIDE_CODEPAGE_ON: CLI ドライバーは、文字データまたはグラフィック・データのバインディングに対して、コード・ページ変換を実行しません。
- SQL_OVERRIDE_CODEPAGE_OFF (デフォルト): CLI ドライバーは文字データまたはグラフィック・データのバインディングに対して、コード・ページ変換を実行します。
SQL_ATTR_OVERRIDE_CODEPAGE 属性を SQL_OVERRIDE_CODEPAGE_ON に設定する場合は、データが適切なコード・ページにあることを確認する必要があります。
SQL_ATTR_OVERRIDE_CHARACTER_CODEPAGE を設定した後で SQL_ATTR_OVERRIDE_CODEPAGE を SQL_OVERRIDE_CODEPAGE_ON に設定すると、CLI ドライバーは CLI0126E エラー・メッセージを返します。
制約事項: SQL_ATTR_OVERRIDE_CODEPAGE 属性は、DB2 for z/OS データベース・サーバーへの接続に対してのみサポートされます。 - SQL_ATTR_OVERRIDE_PRIMARY_AFFINITY
- SQL_ATTR_OVERRIDE_PRIMARY_AFFINITY 接続属性を使用すると、CLI アプリケーションで、クライアント・アフィニティー・フィーチャーの新規一時基本メンバーを指定できます。SQL_ATTR_OVERRIDE_PRIMARY_AFFINITY 属性は、以下の条件下で指定できます。
- db2dsdriver.cfg ファイルでクライアント・アフィニティー・フィーチャーが有効になっている必要がある。
- SQL_ATTR_OVERRIDE_PRIMARY_AFFINITY 属性で指定される新規基本メンバーは、db2dsdriver.cfg ファイルのクライアント・アフィニティー・フィーチャーにリストされているメンバーの一部であるか、または空ストリングである必要がある。
- SQL_ATTR_OVERRIDE_PRIMARY_AFFINITY 属性は、接続が確立された後にのみ、指定できます。
SQL_ATTR_OVERRIDE_PRIMARY_AFFINITY 属性に空ストリング値を指定すると、基本メンバーが、db2dsdriver.cfg ファイルにリストされているクライアント・アフィニティー・フィーチャーの最初のメンバーに戻されます。
SQL_ATTR_OVERRIDE_PRIMARY_AFFINITY 属性で指定された新規一時基本メンバーは、メモリーに保管され、db2dsdriver.cfg ファイルにリストされているメンバーの順序に影響しません。
- SQL_ATTR_PACKET_SIZE
- SQL_ATTR_PACKET_SIZE 接続属性は、ODBC 仕様に定義します。ただし、SQL_ATTR_PACKET_SIZE 属性は CLI ドライバーではサポートされません。 この属性を設定または取得しようとすると、 SQLSTATE は HYC00 (ドライバーが機能しない) になります。
- SQL_ATTR_PARC_BATCH
- 配列入力を使用するアプリケーションでバルク挿入、削除、または更新を完了させるために、SQL_ATTR_PARC_BATCH 属性は、アプリケーションが、各パラメーター・セットの影響を受けた表の行数、またはパラメーター・セット全体で影響を受けた行の累積数を受け取るかどうかを示します。この接続属性は、非アトミック操作に対して使用可能です。
可能な値は次のとおりです。
- SQL_PARC_BATCH_ENABLE: CLI は、各パラメーター・セットによって影響を受けた表の行数を返します。
- SQL_PARC_BATCH_DISABLE (デフォルト): CLI は、パラメーター・セット全体に対して影響を受けた行の合計数を返します。
この接続属性を SQL_PARCH_BATCH_ENABLE に設定する場合、配列を RowCountPtr パラメーターとして SQLRowCount () 関数で指定し、SQL_ATTR_PARAMOPT_ATOMIC を SQL_ATOMIC_NO に設定する必要があります。SQL_ATTR_PARAMOPT_ATOMIC が SQL_ATOMIC_YES に設定されていると、SQLExecute() 関数を呼び出した時点で、CLI0150E エラー・メッセージが返されます。
- SQL_ATTR_PING_DB
- ping 時間をマイクロ秒で取得するために SQLGetConnectAttr() 関数とともに使用される 32 ビット整数。
既存の接続がデータベースによって削除された場合は、値 0 が報告されます。接続がアプリケーションによってクローズされる場合、SQLSTATE の 08003 が報告されます。 SQL_ATTR_PING_DB 属性は、SQLGetConnectAttr() 関数で返すことはできますが、SQLSetConnectAttr() 関数で設定することはできません。 この属性を設定しようとすると、 SQLSTATE は 7HYC00 (ドライバーが機能しない) になります。
注: SQL_ATTR_PING_DB 属性は、IBM 定義の属性です。 - SQL_ATTR_PING_NTIMES
- CLI ドライバーによって実行される ping の反復回数を設定する 32 ビット整数。ping 操作に関連付けられる時間値は、SQLGetConnectAttr() 関数で SQL_ATTR_PING_DB 属性を使用して取得します。SQL_ATTR_PING_NTIMES を 1 より大きい値に設定すると、SQL_ATTR_PING_DB は、CLI ドライバーがデータベースへの ping を一定の回数繰り返すのに要した平均時間を返します。
- この属性の有効範囲は 1 から 32767 (両端を含む) です。SQLGetConnectAttr() 関数は値を検査し、値がこの範囲に収まらない場合には該当するエラー・コードを返します。
- 自動クライアント・リルートが有効であるときに、メンバーに対する ping 操作が失敗すると、シームレス・フェイルオーバーの実行後、CLI ドライバーは、SQL_ATTR_PING_NTIMES に指定された回数だけ新規メンバーに ping します。 CLI ドライバーは、新規メンバーに対する反復実行がすべて正常に終了するまで、そのメンバーに ping します。使用可能なメンバーが存在しない場合は、SQL_ATTR_PING_DB 属性が指定された SQLGetConnectAttr() 関数が、アプリケーションにエラーを返します。 時間値としてゼロ (0) が報告されます。
- SQL_ATTR_PING_REQUEST_PACKET_SIZE
- SQLGetConnectAttr() とともに使用される 32 ビット整数であり、アプリケーションが SQL_ATTR_PING_DB を使用する場合に CLI が使用する ping パケットのサイズを設定します。
- この属性の有効範囲は 1 から 32767 (両端を含む) です。SQLGetConnectAttr() は値を検査し、値がこの範囲に収まらない場合には該当するエラー・コードを返します。
- SQL_ATTR_QUIET_MODE
- 32 ビット・プラットフォーム特定のウィンドウ・ハンドル。
アプリケーションがこのオプションを指定して SQLSetConnectAttr() を呼び出したことがない場合、 CLI はこのオプションに、 SQLGetConnectAttr() に対する NULL の親ウィンドウ・ハンドルを戻し、 NULL の親ウィンドウ・ハンドルを使用してダイアログ・ボックスを表示します。 例えば、エンド・ユーザーが (CLI 初期設定ファイルの項目を介して) オプティマイザー情報を表示するよう求めると、 CLI は NULL のウィンドウ・ハンドルを使用してこの情報が入っているダイアログ・ボックスを表示します。 (プラットフォームによっては、ダイアログ・ボックスが画面の中央に表示されます。)
ValuePtr を NULL に設定すると、CLI はダイアログ・ボックスを表示しません。 エンド・ユーザーがオプティマイザー見積もりを表示するよう求める場合には、 アプリケーションが明示的にそのようなダイアログ・ボックスをすべて抑止するので、 CLI はこれらの見積もりを表示しません。
ValuePtr が NULL ではない場合、アプリケーションの親ウィンドウ・ハンドルになるはずです。 CLI は、このハンドルを使ってダイアログ・ボックスを表示します。 (プラットフォームによっては、 ダイアログ・ボックスがアプリケーションのアクティブ・ウィンドウとの関係において、 中央に表示されます。)
注: この接続オプションを、 SQLDriverConnect() ダイアログ・ボックスを隠すために使用することはできません。 (隠すためには、fDriverCompletion 引数を SQL_DRIVER_NOPROMPT に設定します。) - SQL_ATTR_READ_ONLY_CONNECTION
- SQL_ATTR_READ_ONLY_CONNECTION 属性は、後続の接続が読み取り専用であるかどうかを指定します。
- SQL_READ_ONLY_CONNECTION_ON: SQL_READ_ONLY_CONNECTION_ON 属性の設定後に作成される新規接続が読み取り専用であることを指定します。
- SQL_READ_ONLYCONNECTION_OFF: デフォルト値。SQL_READ_ONLYCONNECTION_OFF 属性の設定後に作成される新規接続が読み取り専用ではないことを指定します。データベース・オブジェクトへのアクセスは、サーバーのユーザー ID に関連付けられている権限によって制御されます。
Informix データベース・サーバーに接続している場合は、SQL_ATTR_READ_ONLY_CONNECTION 属性を指定できません。
DB2 for i サーバーに接続している場合、サーバーに以下の PTF を適用する必要があります。- DB2 for i V6R1 サーバーの場合、PTF SI51729。
- DB2 for i V7R1 サーバーの場合、PTF SI51732。
- SQL_ATTR_RECEIVE_TIMEOUT
-
試行を終了し、通信タイムアウト・エラーを生成する前の、確立された接続でのサーバーからの応答をクライアントが待機する秒数を指定する、32 ビット整数値。 デフォルト値の 0 は、クライアントが応答を無制限に待機することを示します。 受信タイムアウトは、接続の確立中は効果がありません。また、TCP/IP プロトコルに対してのみサポートされ、その他のプロトコルの場合は無視されます。 サポートされる値は、 0 から 32767 までの整数です。
注: これは、IBM 定義の属性です。 - SQL_ATTR_REOPT
- 特殊レジスターまたはパラメーター・マーカーを含む SQL ステートメントに対して照会最適化を有効にする 32 ビット整数値。 コンパイラーによって選択されるデフォルトの推定値の代わりに、特殊レジスターまたはパラメーター・マーカーに対して照会実行時に使用できる値を使用することによって、最適化が生じます。 属性の有効値は、次のとおりです。
- 2 = SQL_REOPT_NONE (デフォルト): 照会の実行時に照会最適化は行われません。コンパイラーによって選択されるデフォルトの推定値が、特殊レジスターまたはパラメーター・マーカーに対して使用されます。 デフォルトの NULLID パッケージ・セットは、動的 SQL ステートメントの実行に使用されます。
- 3 = SQL_REOPT_ONCE: 照会最適化は、照会実行時に一度、初めて照会を実行するときに生じます。NULLIDR1 パッケージ・セットが使用されますが、これは REOPT ONCE バインド・オプションとバインドされています。
- 4 = SQL_REOPT_ALWAYS: 照会最適化または再最適化は、照会の実行時に、毎回必ず生じます。NULLIDRA パッケージ・セットが使用されますが、これは REOPT ALWAYS バインド・オプションとバインドされています。
SQL_ATTR_REOPT と SQL_ATTR_CURRENT_PACKAGE_SET を同時に指定することはできません。したがって、一方を設定すると、他方は許可されません。db2 bind db2clipk.bnd collection NULLIDR1 db2 bind db2clipk.bnd collection NULLIDRA
Informix データベース・サーバーにアクセスする場合、この属性はサポートされません。
注: これは、IBM 定義の属性です。 - SQL_ATTR_REPORT_ISLONG_FOR_LONGTYPES_OLEDB
- 32 ビット整数値。
OLE DB クライアント・カーソル・エンジンおよび OLE DB .NET Data Provider CommandBuilder オブジェクトは、IBM DB2 OLE DB Provider によって提供される列情報に基づいて、UPDATE および DELETE ステートメントを生成します。
生成されたステートメントの WHERE 節に LONG タイプが含まれる場合には、ステートメントが失敗します。なぜなら、等価演算子を使った検索で LONG タイプは使用できないからです。
可能な値は次のとおりです。
- 0 (デフォルト): LONG タイプ (LONG VARCHAR、LONG VARCHAR FOR BIT DATA、LONG VARGRAPHIC、および LONG VARGRAPHIC FOR BIT DATA) は、DBCOLUMNFLAGS_ISLONG フラグを設定しません。そのため、WHERE 節でその列が使用されることがあります。
- 1: IBM DB2 OLE DB Provider は LONG タイプ (LONG VARCHAR、LONG VARCHAR FOR BIT DATA、LONG VARGRAPHIC、および LONG VARGRAPHIC FOR BIT DATA) を、DBCOLUMNFLAGS_ISLONG フラグを設定して報告します。 これは、WHERE 節で long 列が使用されるのを防ぎます。
この属性は、以下のデータベース・サーバーによってサポートされます。- DB2 for z/OS
- バージョン 8 (PTF UQ93890 適用済み)
- バージョン 8 より後のバージョン (PTF は不要)
- DB2 for Linux, UNIX, and Windows
Informix データベース・サーバーにアクセスする場合、この属性はサポートされません。
注: これは、IBM 定義の属性です。 - SQL_ATTR_REPORT_SEAMLESSFAILOVER_WARNING
- シームレス・フェイルオーバーが接続要求または実行要求で発生した場合に、その要求で警告メッセージを返すかどうかを指定する 32 ビットの符号なしの整数値。
SQL_ATTR_REPORT_SEAMLESSFAILOVER_WARNING 属性には、以下の値を指定できます。
- SQL_REPORT_SEAMLESSFAILOVER_WARNING_YES: シームレス・フェイルオーバーが接続要求または実行要求中に発生した場合、警告メッセージが返されます。
- SQL_REPORT_SEAMLESSFAILOVER_WARNING_NO (デフォルト): シームレス・フェイルオーバーが接続要求または実行要求中に発生した場合、警告メッセージが返されません。
- SQL_ATTR_REPORT_TIMESTAMP_TRUNC_AS_WARN
- 日時オーバーフローがエラー (SQLSTATE 22008) または警告 (SQLSTATE 01S07) のどちらになるかを指定する 32 ビットの符号なし整数値。可能な値は次のとおりです。
- 0 (デフォルト): 日時オーバーフローはエラーにつながる (SQLSTATE 22008)。
- 1: 日時オーバーフローは警告につながる (SQLSTATE 01S07)。
- SQL_ATTR_RETRY_ON_MERGE
- MERGE ステートメントに対して配列入力チェーニング・フィーチャーを有効にして行える再試行の回数を指定する整数値。配列入力チェーニング・フィーチャーは、DB2 for Linux, UNIX, and Windows、DB2 for i、または DB2 for z/OS サーバーへの接続に対して有効にすることができます。
ColumnwiseMRI キーワードまたは SQL_ATTR_COLUMNWISE_MRI 属性を使用して、DB2 for z/OS サーバーへの接続時に配列入力チェーニング・フィーチャーを有効にすることができます。
DB2 for Linux, UNIX, and Windows または DB2 for i サーバーへの接続時に配列入力チェーニング・フィーチャーを有効にするには、SQL_ATTR_CHAINING_BEGIN および SQL_ATTR_CHAINING_END ステートメント属性を指定したArrayInputChain キーワードを使用します。
DB2 for i サーバーへの接続については、DB2 for i V7R1 以降のリリースでは SQL_ATTR_RETRY_ON_MERGE パラメーターがサポートされています。
CLI ドライバーは、SQLBindParameter() または SQLExtendedBind() 関数を使用して指定したパラメーターごとに 100 個の要素で構成される配列バッファーを割り振ります。 サーバー上のリソース競合問題が原因でエラーが発生すると、CLI ドライバーは失敗した行の配列を構成し、ステートメントを SQL_ATTR_RETRY_ON_MERGE 属性で設定された反復の回数再実行します。
- 0 (デフォルト): デフォルト値。再試行は行われません。
- 1-6: 実行可能な再試行の回数。最大再試行回数は 6 回です。
以下の条件下では、SQL_ATTR_RETRY_ON_MERGE 属性を設定しても効果がありません。- MERGE 操作にパラメーターとして以下のいずれかのデータ・タイプがバインドされている場合。
- SQL_CLOB
- SQL_BLOB
- SQL_LONGVARBINARY
- SQL_LONGVARGRAPHIC
- SQL_DBCLOB
- SQL_XML
- パラメーターが SQLPutData() および SQLParamData() 関数の呼び出しを必要とする MERGE 操作の SQL_DATA_AT_EXEC 引数にバインドされている場合。
- MERGE 操作に以下のいずれかのステートメント属性が指定されている場合。
- SQL_ATTR_INTERLEAVED_PUTDATA
- SQL_ATTR_INTERLEAVED_STREAM_PUTDATA
- SQL_ATTR_USE_LOAD_API
- MERGE 操作に配列パラメーターが指定されている場合。
- DB2 for Linux, UNIX, and Windows サーバーへの接続で SQL_ATTR_INSERT_BUFFERING ステートメント属性が有効になっている場合。
- CLI ドライバーが、アプリケーション・データを保管するために必要な内部バッファーを割り振りできない場合。
- SQL_ATTR_RETRYONERROR
- CLI は、アプリケーション・パラメーターの不正なバインドなどの致命的ではないエラーからのリカバリーを、失敗した SQL ステートメントに関する追加情報を検索してからそのステートメントを再び実行することによって行います。検索される追加情報には、データベース・カタログ表からの入力パラメーター情報が含まれます。
CLI がエラーから正常にリカバリーできる場合は、
デフォルトでは、アプリケーションへのエラー報告はされません。
CLI/ODBC 構成キーワード ReportRetryErrorsAsWarnings を使用することにより、
エラー・リカバリー警告がアプリケーションに戻されるようにするかどうかを設定できます。
注: いったん CLI が正常にエラー・リカバリーを完了すると、 アプリケーションが通常とは異なる動作をする場合がありますが、 それは CLI が元の SQLBindParameter() 関数呼び出しで提供された情報ではなく、 それに続けて実行した SQL ステートメントに対するリカバリー中に収集されたカタログ情報を使用するためです。 このような動作が望ましくない場合は、 RetryOnError を 0 に設定し、 強制的に CLI がリカバリーを試行しないようにします。 しかし、ステートメント・パラメーターを正しくバインドするように、 アプリケーションを変更する必要があります。
- SQL_ATTR_SERVER_MSGTXT_MASK
- CLI がサーバーからエラー・メッセージをいつ要求するかを示すために使用される、32 ビット整数値。
この属性は、SQL_ATTR_SERVER_MSGTXT_SP 属性と組み合わせて使用されます。
属性は以下の値に設定できます。
- SQL_ATTR_SERVER_MSGTXT_MASK_LOCAL_FIRST (デフォルト): CLI は、ローカル・メッセージ・ファイルを最初に調べて、メッセージを検索できるかどうかを確かめます。 一致する SQLCODE が見つからない場合、CLI はサーバーから情報を要求します。
- SQL_ATTR_SERVER_MSGTXT_MASK_WARNINGS: CLI は常に、警告に関するサーバーからのメッセージ情報を要求しますが、エラー・メッセージがローカル・メッセージ・ファイルから取り出されます。
- SQL_ATTR_SERVER_MSGTXT_MASK_ERRORS: CLI は常に、エラーに関するサーバーからのメッセージ情報を要求しますが、警告メッセージがローカル・メッセージ・ファイルから取り出されます。
- SQL_ATTR_SERVER_MSGTXT_MASK_ALL: CLI は常に、エラーと警告メッセージの両方に関する情報をサーバーから要求します。
ServerMsgMask CLI/ODBC 構成キーワードの設定は、この動作を指定する別の方法です。
注: これは、IBM 定義の属性です。 - SQL_ATTR_SERVER_MSGTXT_SP
- SQLCA を基にしてエラー・メッセージを生成するために使用されるストアード・プロシージャーを識別するための文字ストリングを指すポインター。
これは、DB2 for z/OS などのサーバーからエラー情報を取り出す際に役立ちます。
属性は以下の値に設定できます。
- SYSIBM.SQLCAMESSAGE: メッセージ・テキストを DB2 for z/OS サーバーから取り出すために呼び出されるデフォルト・プロシージャー。この属性を設定しない場合は、このプロシージャーが呼び出されます。
- DSNACCMG: メッセージ・テキストを DB2 for z/OS バージョン 7 サーバーから取り出すために呼び出されるデフォルト・プロシージャー。メッセージ・テキストを DB2 for z/OS バージョン 8 以降から取り出すためには、SYSIBM.SQLCAMESSAGE プロシージャーが呼び出されます。DSNACCMG は、DB2 for z/OS バージョン 9 では推奨されておらず、将来のリリースで除去される可能性があります。
- ユーザーが作成したストアード・プロシージャー
この属性を使用するアプリケーションは、SQL_ATTR_SERVER_MSGTXT_MASK 属性も設定して、メッセージ情報をサーバーから取り出すために CLI がいつこのプロシージャーを呼び出すかを示すことができます。 SQL_ATTR_SERVER_MSGTXT_MASK が設定されていない場合、デフォルトで、ローカル・メッセージ・ファイルを最初に調べます (SQL_ATTR_SERVER_MSGTXT_MASK の SQL_ATTR_SERVER_MSGTXT_MASK_LOCAL_FIRST を参照してください)。
UseServerMsgSP CLI/ODBC 構成キーワードの設定は、この動作を指定する別の方法です。
注: これは、IBM 定義の属性です。 - SQL_ATTR_SESSION_TIME_ZONE
- サーバー・セッション・タイム・ゾーン情報が含まれる、±hh:mm 形式のヌル終了文字ストリング。これは、設定のみが可能な属性です。 サポートされるタイム・ゾーン値は、-12:59 から +14:00 までの範囲です。
- SQL_ATTR_SQLCOLUMNS_SORT_BY_ORDINAL_OLEDB
- 32 ビット整数値。
Microsoft OLE DB 仕様は、IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) が列 TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME、COLUMN_NAME によってソートされた行セットを戻すことを要求します。
IBM DB2 OLE
DB Provider はこの仕様に準拠していますが、Microsoft ODBC Bridge provider (MSDASQL) を使用するアプリケーションは、一般に、行セットが ORDINAL_POSITION によってソートされるようにコード化されています。
可能な値は次のとおりです。
- 0 (デフォルト): IBM DB2 OLE DB Provider は、TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME, COLUMN_NAME 列によってソートされた行セットを戻します。
- 1: IBM DB2 OLE DB Provider は、ORDINAL_POSITION によってソートされた行セットを戻します。
この属性は、以下のデータベース・サーバーによってサポートされます。- DB2 for z/OS
- バージョン 8 (PTF UQ93890 適用済み)
- バージョン 8 より後のバージョン (PTF は不要)
- DB2 for Linux, UNIX, and Windows
Informix データベース・サーバーにアクセスする場合、この属性はサポートされません。
注: これは、IBM 定義の属性です。 - SQL_ATTR_STMT_CONCENTRATOR
- リテラル値を含む動的ステートメントがステートメント・キャッシュを使用するかどうかを指定します。
- SQL_STMT_CONCENTRATOR_OFF - ステートメント・コンセントレーターの動作は無効です。
- SQL_STMT_CONCENTRATOR_WITH_LITERALS - サーバーがサポートしている状況の場合、ステートメント・コンセントレーターが有効になり、リテラル値を含む動的ステートメントはステートメント・キャッシュを使用します。 例えば、ステートメントにパラメーター・マーカー、名前付きパラメーター・マーカー、またはリテラルとパラメーター・マーカーおよび名前付きパラメーター・マーカーの組み合わせが含まれている場合、ステートメント・コンセントレーターは有効になりません。
StmtConcentrator CLI/ODBC 構成キーワードの設定は、この動作を指定する別の方法です。
- SQL_ATTR_STREAM_GETDATA
- SQLGetData() 関数のデータ出力ストリームが最適化されるかどうかを示す 32 ビット符号なし整数。
値は以下のとおりです。
- 0 (デフォルト): CLI はクライアント上のすべてのデータをバッファーに入れます。
- 1: データをバッファーに入れる必要のないアプリケーションで Dynamic Data Format (プログレッシブ・ストリーミングとも呼ばれる) をサポートするサーバー上のデータを照会している場合は、1 を指定することによって、データをバッファーに入れる必要がないことを示してください。 CLI クライアントは、データ出力ストリームを最適化します。
Dynamic Data Format がサーバーによってサポートされない場合、このキーワードは無視されます。
StreamGetData が 1 に設定されている場合、出力バッファーに入れて戻すためにまだ使用できるバイト数を CLI が判別できない場合、切り捨て発生時に SQLGetData() は長さとして SQL_NO_TOTAL (-4) を戻します。 それ以外の場合、SQLGetData() は、まだ使用できるバイト数を戻します。
StreamGetData CLI/ODBC 構成キーワードの設定は、この動作を指定する別の方法です。
- SQL_ATTR_STREAM_OUTPUTLOB_ON_CALL
- SQL_ATTR_STREAM_OUTPUTLOB_ON_CALL 属性は、ストアード・プロシージャーの OUT パラメーター (LOB データ・タイプまたは XML データ・タイプ) のストリーミングを指定します。
また、SQL_ATTR_STREAM_OUTPUTLOB_ON_CALL 属性を指定して、LOB データ・タイプおよび XML データ・タイプの OUT パラメーターのデータ長情報を取得することもできます。SQL_ATTR_STREAM_OUTPUTLOB_ON_CALL 属性には、以下のいずれかの値を指定できます。
- SQL_STREAM_OUTPUTLOB_ON_CALL_FALSE (デフォルト): CALL ステートメントの OUT パラメーター・データ (LOB データ・タイプまたは XML データ・タイプのデータ) のストリーミングを使用不可にします。
- SQL_STREAM_OUTPUTLOB_ON_CALL_TRUE: CALL ステートメントの OUT パラメーター・データ (LOB データ・タイプまたは XML データ・タイプのデータ) のストリーミングを使用可能にします。
実際のデータ長情報を取得し、LOB データ・タイプまたは XML データ・タイプの OUT パラメーター・データをストリームするには、以下の条件を満たしていることを確認する必要があります。- LOB および XML データ・タイプの OUT パラメーターに対する SQLBindParameters() 関数には、rgbValue 引数として NULL 値を指定すること。
- アプリケーションに LOB および XML データ・タイプの OUT パラメーターに関するデータ長の情報が必要な場合には、SQLBindParameter() 関数の pcbValue 引数に対する SQLINTEGER 変数に、有効なメモリー・アドレスを渡すこと。SQLExecute() 関数を使用することによって CALL ステートメントが正常に実行されたら、SQLINTEGER 変数に長さ情報が返されます。
- ストアード・プロシージャー呼び出しで使用されたすべての OUT パラメーターのデータが SQLGetData() 関数で取得されてから、SQLFetch() 関数で結果セットが取得される。 SQLFetch() 関数を呼び出すと、CLI ドライバーがすべてのデータ・バッファーを削除します。
- LOB ロケーターが使用されていないこと。
- ストアード・プロシージャーの OUT パラメーターが、ARRAY フォームの LOB または XML データ・タイプではないこと。
- SQL_ATTR_SYNC_POINT
- SQL_ATTR_SYNC_POINT 属性は推奨されません。
- SQL_ATTR_TIME_FMT
- SQL_ATTR_TIME_FMT 属性は、時刻形式を指定します。
SQL_ATTR_TIME_FMT 属性には、以下のいずれかの値を指定します。
- SQL_IBMi_FMT_ISO: 国際標準化機構 (ISO) の時刻形式 hh.mm.ss を使用します。
- SQL_IBMi_FMT_USA: 米国の時刻形式 hh:mm xx (xx は AM または PM) を使用します。
- SQL_IBMi_FMT_EUR: ヨーロッパの時刻形式 hh.mm.ss を使用します。
- SQL_IBMi_FMT_JIS: 日本工業規格の時刻形式 hh:mm:ss を使用します。
- SQL_IBMi_FMT_HMS: 時刻形式 hh:mm:ss を使用します。
SQL_ATTR_TIME_FMT 属性のデフォルト値は、パッケージに対して指定されている DATETIME バインド・オプションによって決まります。 CLI パッケージに対してデフォルトの DATETIME バインド・オプションを指定した場合は、SQL_IBMi_FMT_JIS が SQL_ATTR_TIME_FMT 属性のデフォルト値になります。
SQL_ATTR_TIME_FMT 属性は、DB2 for i サーバーとともに使用する場合にのみ、有効です。注: SQL_ATTR_TIME_FMT 属性は、IBM 定義の属性です。 - SQL_ATTR_TIME_SEP
- SQL_ATTR_TIME_SEP 属性は、時刻の区切り記号を指定します。
SQL_ATTR_TIME_SEP 属性には、以下のいずれかの値を指定します。
- SQL_SEP_COLON: 時刻区切り記号にコロン ( : ) を指定します。
- SQL_SEP_PERIOD: 時刻区切り記号にピリオド ( . ) を使用します。
- SQL_SEP_COMMA: 時刻区切り記号にコンマ ( , ) を使用します。
- SQL_SEP_BLANK: 時刻区切り記号にブランクを使用します。
- SQL_SEP_JOB: ジョブのデフォルトの時刻区切り記号を使用します。
SQL_ATTR_TIME_SEP 属性のデフォルト値は、パッケージに対して指定されている DATETIME バインド・オプションによって決まります。 CLI パッケージに対してデフォルトの DATETIME バインド・オプションが指定されている場合、 SQL_SEP_COLON が SQL_ATTR_TIME_SEP 属性のデフォルト値になります。
SQL_ATTR_TIME_SEP 属性は、SQL_ATTR_TIME_FMT 属性に SQL_IBMi_FMT_HMS を設定した後、DB2 for i サーバーで使用する場合にのみ有効です。注: SQL_ATTR_TIME_SEP 属性は、IBM 定義の属性です。 - SQL_ATTR_TRACE
- この接続属性は、ODBC Driver Manager 用のアプリケーションで設定できます。
CLI Driver にこの接続属性を設定しようとすると、SQLSTATE は HYC00 (ドライバーが機能しない) になります。
この接続属性を使用する代わりに、Trace CLI/ODBC 構成キーワードを使用して CLI トレース機能を設定することができます。 あるいは、環境属性 SQL_ATTR_TRACE を使用して、トレース・フィーチャーを構成することもできます。 環境属性は ODBC Driver Manager の接続属性と同じ構文を使用しないことに注意してください。
- SQL_ATTR_TRACEFILE
- この接続属性は ODBC で定義されていますが、CLI ではサポートされません。
この属性を設定または取得しようとすると、
SQLSTATE は HYC00 (ドライバーが機能しない) になります。
この属性を使用する代わりに TraceFileName CLI/ODBC 構成キーワードを使用して、CLI トレース・ファイル名を設定します。
- SQL_ATTR_TRANSLATE_LIB
- この接続属性は ODBC で定義されていますが、CLI ではサポートされません。 他のプラットフォームでこの属性を設定または取得しようとすると、 SQLSTATE は HYC00 (ドライバーが機能しない) になります。
- SQL_ATTR_TRANSLATE_OPTION
- この接続属性は ODBC で定義されていますが、CLI ではサポートされません。 他のプラットフォームでこの属性を設定または取得しようとすると、 SQLSTATE は HYC00 (ドライバーが機能しない) になります。
- SQL_ATTR_TRUSTED_CONTEXT_PASSWORD
- パスワードを含む、ユーザー定義ストリング。
トラステッド接続上のユーザーを切り替えるときにデータベース・サーバーがパスワードを必要とする場合は、この属性を使用します。
この属性は、属性 SQL_ATTR_TRUSTED_CONTEXT_USERID を設定した後、およびデータベース・サーバーにアクセスする SQL ステートメントを実行する前に設定してください。
この属性を設定する前に SQL_ATTR_TRUSTED_CONTEXT_USERID が設定されていない場合、エラー (CLI0198E) が戻されます。
Informix データベース・サーバーにアクセスする場合、この属性はサポートされません。
- SQL_ATTR_TRUSTED_CONTEXT_USERID
-
ユーザー ID を含む、ユーザー定義ストリング。 ユーザーを切り替えるには、既存のトラステッド接続上でこれを使用します。 トラステッド接続を作成する際には、これを使用しないでください。
この属性を設定した後、次にデータベース・サーバーにアクセスする SQL ステートメントを実行すると、ユーザーの切り替えが行われます。 (SQLSetConnectAttr はデータベース・サーバーにアクセスしません。) ユーザーの切り替えが成功する場合、この属性内のユーザー ID が接続の新規ユーザーになります。 ユーザーの切り替えが失敗すると、切り替えを開始した呼び出しは、失敗の理由を示すエラーを戻します。
ID サーバーを使用していない場合、ユーザー ID はデータベース・サーバー上の有効な許可 ID でなければなりません。 その場合、ID サーバーが認識する任意のユーザー名を使用できます。 (ID サーバーを使用している場合は、SQL_ATTR_USER_REGISTRY_NAME も参照してください。)
接続ハンドルがまだデータベースに接続されていない間にこの属性を設定する場合、または接続がトラステッド接続ではない場合、エラー (CLI0197E) が戻されます。
Informix データベース・サーバーにアクセスする場合、この属性はサポートされません。
- SQL_ATTR_TXN_ISOLATION
- ConnectionHandle で参照される現行接続のトランザクション分離レベルを設定する 32 ビットのビット・マスク。
ValuePtr の有効値は、実行時に fInfoType を SQL_TXN_ISOLATION_OPTIONS に設定して SQLGetInfo() を呼び出せば判別できます。
次の値は CLI では受け入れられますが、
各サーバーではこれらの分離レベルのうちの 1 つのサブセットしかサポートできないことがあります。
- SQL_TXN_READ_UNCOMMITTED - ダーティー読み取り、反復不能読み取り、幻像読み取りが可能です。
- SQL_TXN_READ_COMMITTED (デフォルト) - ダーティー読み取りが不可能です。 反復不能読み取りと幻像読み取りが可能です。
- SQL_TXN_REPEATABLE_READ - ダーティー読み取りと反復不能読み取りが不可能です。 幻像読み取りが可能です。
- SQL_TXN_SERIALIZABLE - トランザクションがシリアライズ可能です。 ダーティー読み取り、反復不能読み取り、幻像読み取りが不可能です。
- SQL_TXN_NOCOMMIT - 操作が正常に終了したときに、変更内容が有効にコミットされます。 明示コミットやロールバックはできません。 これは、自動コミットに似ています。 これは SQL92 分離レベルではありませんが、DB2 for i サーバーのみがサポートする IBM 定義の属性です。
IBM の用語では、- SQL_TXN_READ_UNCOMMITTED は、非コミット読み取りです。
- SQL_TXN_READ_COMMITTED は、カーソル固定です。
- SQL_TXN_REPEATABLE_READ は、読み取り固定です。
- SQL_TXN_SERIALIZABLE は、反復可能読み取りです。
このオプションは、いずれかのステートメント・ハンドル上にオープン・カーソルがある場合や、 この接続に未解決のトランザクションがある場合は指定できません。 それ以外の場合は、関数呼び出し時に SQL_ERROR (SQLSTATE S1011) が戻されます。
この属性 (または対応するキーワード) を使用できるのは、デフォルトの分離レベルが使用される場合だけです。 アプリケーションが特定の分離レベルを設定する場合は、この属性を設定しても効果はありません。
注: ステートメント・ハンドルでトランザクション分離レベルの設定を許可する IBM 属性があります。 詳細は、SQL_ATTR_STMTTXN_ISOLATION ステートメント属性の項を参照してください。 - SQL_ATTR_USE_TRUSTED_CONTEXT
- 信頼できるコンテキストをサポートする DB2 データベース・サーバーに接続する際に、作成先の接続をトラステッド接続にする場合には、この属性を設定します。 この属性が SQL_TRUE に設定されており、データベース・サーバーが接続を信頼できると判断する場合、その接続はトラステッド接続です。 この属性が設定されていない場合、この属性が SQL_FALSE に設定されている場合、データベース・サーバーが信頼できるコンテキストをサポートしない場合、またはデータベース・サーバーが接続を信頼できないと判断する場合、通常の接続が代わりに作成され、警告 (SQLSTATE 01679) が戻されます。 この値は、接続が初めて確立される前か、または SQLDisconnect() 関数の呼び出しに続いて確立される前にのみ指定できます。
- SQL_ATTR_USER_REGISTRY_NAME
-
この属性は、サーバー上で ID マッピング・サービスを使用するユーザーを認証する際にのみ使用されます。 これは、ID マッピング・レジストリーに名前を付けるユーザー定義ストリングに設定されます。 レジストリー名のフォーマットは、使用される ID マッピング・サービスに応じて変化します。 この属性を指定することにより、提供したユーザー名がこのレジストリーにあることがサーバーに通知されます。
この属性を設定した後、次に通常接続を確立しようとするとき、次にトラステッド接続を確立しようとするとき、または次にトラステッド接続でユーザー ID を切り替えようとするときに、値が使用されます。
Informix データベース・サーバーにアクセスする場合、この属性はサポートされません。
- SQL_ATTR_WCHARTYPE
- アプリケーションで使用する wchar_t (SQLDBCHAR) 文字フォーマットを、2 バイトの環境で指定する 32 ビット整数。
このオプションには、wchar_t データをマルチバイト・フォーマットまたはワイド文字フォーマットのどちらにするかの選択の融通性があります。
このオプションに使用できる 2 つの値は、次のとおりです。
- SQL_WCHARTYPE_CONVERT: データベースにある GRAPHIC SQL データとアプリケーション変数間で、 文字コードが変換されます。 この変換により、アプリケーションで広幅文字ストリング (例えば、L リテラル、 'wc' ストリング関数) を処理する ANSI C メカニズムを最大限に活用できるようになります。データベースと通信する前に、データをマルチバイト・フォーマットに明示的に変換する必要はありません。 不利な点としては、暗黙的な変換により、アプリケーションの実行時パフォーマンスが影響を受け、 メモリー所要量が増える可能性があります。 WCHARTYPE CONVERT を行う必要がある場合、 コンパイル時に C プリプロセッサー・マクロ SQL_WCHART_CONVERT を定義してください。 これにより、DB2 ヘッダー・ファイルにある特定の定義で、 データ・タイプ sqldbchar の代わりに wchar_t を使用することになります。
- SQL_WCHARTYPE_NOCONVERT (デフォルト): アプリケーションとデータベースとの間で、 暗黙的な文字コード変換は行われません。 アプリケーション変数のデータは、非代替 DBCS 文字としてデータベースへ送信され、 かつデータベースから受信します。 この送受信の場合、アプリケーションのパフォーマンスは向上しますが、 アプリケーションが wchar_t (SQLDBCHAR) アプリケーション変数で広幅文字データを使用しなくなったり、 wcstombs() および mbstowcs() ANSI C 関数を明示的に呼び出して、 データをデータベースとやりとりするときに、そのデータをマルチバイト・フォーマットに変換したり、 このフォーマットから変換したりする、という不利な点があります。
注: これは IBM 定義の属性です。 - SQL_ATTR_XML_DECLARATION
- XML データが暗黙的にシリアライズされるときに XML 宣言のエレメントが XML データに追加されることを示す 32 ビット符号なし整数。
この属性は XMLSERIALIZE 関数の結果に影響を与えません。この属性を、必要な各コンポーネントの合計に設定します。
- 0: 出力バッファーに追加される宣言またはバイト・オーダー・マーク (BOM) はありません。
- 1: ターゲット・エンコードが UTF-16 または UTF-32 の場合、該当するエンディアン (リトル・エンディアンまたはビッグ・エンディアン) のバイト・オーダー・マーク (BOM) が出力バッファーの前に付加されます。 (UTF-8 BOM がある場合でも、ターゲット・エンコードが UTF-8 であっても、DB2 は UTF-8 BOM を生成しません。)
- 2: XML バージョンだけを含む最小の XML 宣言が生成されます。
- 4: ターゲット・エンコードを識別するエンコード属性が、生成された XML 宣言に追加されます。 そのため、この設定が有効になるのは、この属性の値を計算する際に設定 2 も含まれている場合に限ります。
デフォルト設定は 7 です。これは、XML バージョンとエンコード属性を含む BOM および XML 宣言が暗黙的なシリアライズ中に生成されることを示します。
この設定は、値の変更後に割り振られるステートメント・ハンドルに影響を与えます。 既存のステートメント・ハンドルは元の値を保持します。
Informix データベース・サーバーにアクセスする場合、この属性はサポートされません。