ステートメント属性 (CLI) リスト

SQLSetStmtAttr() 関数を使用して、ステートメント・ハンドルに固有の CLI および ODBC ドライバー属性を設定できます。 現在のステートメント属性値は、SQLGetStmtAttr() 関数で取得します。 一部のステートメント属性は、 CLI ドライバーに固有のものです。
ステートメント属性リストには、以下の情報が含まれます。
  • ステートメント属性の定義
  • ステートメント属性の値
  • ステートメント属性のデフォルト値 (適用可能な場合)
  • データ・ソースに固有の制限
SQL_ATTR_ALLOW_INTERLEAVED_GETDATA
アプリケーションが、以前にアクセスした LOB 列に対して SQLGetData() を呼び出し、動的データ形式をサポートするデータ・サーバーを照会するときに、前回の SQLGetData() 呼び出しからのデータ・オフセット位置を維持できるかどうかを指定します。 この属性の値は次のうちの 1 つとなります。
  • SQL_ALLOW_INTERLEAVED_GETDATA_OFF-このデフォルト設定では、アプリケーションは以前にアクセスした LOB 列に対して SQLGetData() を呼び出すことができません。
  • SQL_ALLOW_INTERLEAVED_GETDATA_ON - このキーワードは、Dynamic Data Format (プログレッシブ・ストリーミングとも呼ばれる) をサポートするデータベース・サーバーへの接続にのみ影響を与えます。 以前にアクセスした LOB 列に対してアプリケーションが SQLGetData() を呼び出し、前回の読み取り時にアプリケーションが読み取りを停止した場所から LOB データの読み取りを開始できるようにするには、このオプションを指定します。

AllowInterleavedGetData CLI/ODBC 構成キーワード を設定することは、接続レベルでこの動作を指定する代替方法です。

SQL_ATTR_ALLOW_INTERLEAVED_GETDATA 接続属性は、 Informix® データベース・サーバーではサポートされません。

SQL_ATTR_APP_PARAM_DESC
ステートメント・ハンドル上の SQLExecute() および SQLExecDirect() に対する後続の呼び出しのための APD に対するハンドル。 この属性の初期値は、ステートメントの初期割り当て時に暗黙的に割り当てられる記述子です。 この属性が SQL_NULL_DESC に設定されていると、明示的に割り当てられた APD ハンドルは、 今まで関連付けられていたステートメント・ハンドルとの関連付けを断たれ、 ステートメント・ハンドルは、暗黙的に割り当てられる APD ハンドルに戻ります。

この属性は、別のステートメントに暗黙的に割り当てられた記述子ハンドル、 または同じステートメントで暗黙的に設定された別の記述子ハンドルには設定することができません。 つまり、暗黙的に割り当てられた記述子ハンドルは、 1 つのステートメントまたは 1 つの記述子ハンドルにしか関連付けできないということです。

この属性は、接続レベルでは設定できません。

SQL_ATTR_APP_ROW_DESC
ステートメント・ハンドルでの以後のフェッチを行うための ARD へのハンドル。 この属性の初期値は、ステートメントの初期割り当て時に暗黙的に割り当てられる記述子です。 この属性が SQL_NULL_DESC に設定されていると、明示的に割り当てられた ARD ハンドルは、 今まで関連付けられていたステートメント・ハンドルとの関連付けを断たれ、 ステートメント・ハンドルは、暗黙的に割り当てられる ARD ハンドルに戻ります。

この属性は、別のステートメントに暗黙的に割り当てられた記述子ハンドル、 または同じステートメントで暗黙的に設定された別の記述子ハンドルには設定することができません。 つまり、暗黙的に割り当てられた記述子ハンドルは、 1 つのステートメントまたは 1 つの記述子ハンドルにしか関連付けできないということです。

この属性は、接続レベルでは設定できません。

SQL_ATTR_APP_USES_LOB_LOCATOR
アプリケーションが LOB ロケーターを使用するかどうかを示す 32 ビット符号なし整数。 この属性の値は次のうちの 1 つとなります。
  • 1 (デフォルト): アプリケーションが LOB ロケーターを使用するかどうかを示します。
  • 0: LOB ロケーターを使用しないアプリケーションで Dynamic Data Format (プログレッシブ・ストリーミングとも呼ばれる) をサポートするサーバー上のデータを照会している場合は、0 を指定することによって、LOB ロケーターが使用されないことを示し、LOB データの戻りが最適化されるようにしてください。

ストアード・プロシージャーの結果セットの場合、このキーワードは無視されます。

キーワードが 0 に設定され、アプリケーションが SQLBindCol()を使用する結果セットに LOB ロケーターをバインドすると、 SQLFetch() 関数によって無効な変換エラーが戻されます。

AppUsesLOBLocator CLI/ODBC および IBM データ・サーバー・ドライバー構成キーワード を設定することも、この動作を指定する代替方法です。

SQL_ATTR_ASYNC_ENABLE
指定したステートメントで呼び出される関数が非同期で実行されるかどうかを指定する 32 ビット整数値。
  • SQL_ASYNC_ENABLE_OFF = Off (デフォルト値)
  • SQL_ASYNC_ENABLE_ON = On
関数が非同期に呼び出された後は、元の関数が SQL_STILL_EXECUTING 以外のコードを戻すまで、元の関数 SQLAllocHandle()SQLCancel()SQLSetStmtAttr()SQLGetDiagField()SQLGetDiagRec()、または SQLGetFunctions() のみをステートメント・ハンドルで呼び出すことができます。 同じ接続のもとでは、他のどのステートメント・ハンドル上で他の関数を呼び出しても、HY010 の SQLSTATE (関数シーケンス・エラー) をともなった SQL_ERROR が戻されます。

CLI はステートメント・レベルの非同期実行をサポートするため、ステートメント属性 SQL_ATTR_ASYNC_ENABLE を設定できます。 その初期値は、ステートメント・ハンドルが割り振られたときの同じ名前を持つ接続レベル属性の値と同じです。

次の関数は非同期で実行できます: 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 に相当する関数は、非同期に呼び出すこともできます。 バージョン 9.7 フィックスパック 4 以降、SQL_ATTR_ASYNC_ENABLE 属性は SQL_ATTR_USE_LOAD_API と一緒に使用することができます。
SQL_ATTR_BLOCK_FOR_NROWS
結果セットのフェッチ時に、サーバーから戻される規定のブロック・サイズを何行にするかを指定する 32 ビット整数。 1 つ以上のデータ・ブロックで構成される読み取り専用の大きな結果セットの場合、 ブロック・サイズを大きい値に指定することによって、 クライアントからのサーバー・ブロックの同時要求数が小さくなり、 パフォーマンスが向上する場合があります。 デフォルト値は 0 であり、 その場合はデフォルトのブロック・サイズがサーバーから戻されます。
SQL_ATTR_BLOCK_LOBS
LOB データ・タイプを戻す結果セットのブロックを有効にするかどうかを指定する Boolean 属性。 この属性は、デフォルトでは 0 (false) に設定されていますが、1 (true) に設定した場合は、 LOB データ・タイプを戻す結果セットのブロックをサポートするサーバーにアクセスする際に、 1 回のフェッチ要求に対し、単一の照会ブロックに完全に収まる行に対応する LOB データがすべて戻されます。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

SQL_ATTR_CALL_RETURN
ストアード・プロシージャー実行後に取り出されることになる読み取り専用属性。 ストアード・プロシージャーが実行に失敗した場合、 この属性から戻される値は -1 になります (その実行可能ストアード・プロシージャーを含むライブラリーが見つからない場合など)。 ストアード・プロシージャーは正常に実行されたが、 戻りコードが負の数の場合 (例えば、 表にデータを挿入する際にデータの切り捨てが実行された場合)、 SQL_ATTR_CALL_RETURN は、 そのストアード・プロシージャーの実行時に SQLCA の sqlerrd(1) フィールドに設定された値を戻します。
SQL_ATTR_CHAINING_BEGIN
サーバーに要求を送信する前に、 Db2® が単一の準備済みステートメントに対する SQLExecute() 要求をチェーニングすることを指定する 32 ビット整数。このフィーチャーは、 CLI 配列入力チェーニングと呼ばれます。 準備済みステートメントに関連したすべての SQLExecute() 要求は、SQL_ATTR_CHAINING_END ステートメント属性が設定されるか、または使用可能なバッファー・スペースがチェーニングされた行によって消費されるまで、サーバーに送信されません。 このバッファーのサイズは、ローカル・クライアント・アプリケーションの場合は aslheapsz データベース・マネージャー構成パラメーターによって、クライアント/サーバー構成の場合は rqrioblk データベース・マネージャー構成パラメーターによって定義されます。

この属性を CLI/ODBC 構成キーワード ArrayInputChain と一緒に使用すると、配列サイズを指定せずに配列入力を有効にすることができます。 詳しくは、 ArrayInputChain の資料を参照してください。

注: この属性で設定される特定の 32 ビット整数値は、 CLIにとって重要ではありません。 この属性を任意の 32 ビット整数値に設定すると、 CLI 配列入力チェーニング・フィーチャーが使用可能になります。
SQL_ATTR_CHAINING_END
32 ビット整数。SQL_ATTR_CHAINING_BEGIN ステートメント属性の設定により、以前に有効にした CLI 配列入力チェーニング動作が終了することを指定します。 SQL_ATTR_CHAINING_END を設定すると、チェーニングされたすべての SQLExecute() 要求がサーバーに送信されます。 この属性が設定された後、 SQLRowCount() を呼び出して、SQL_ATTR_CHAINING_BEGIN と SQL_ATTR_CHAINING_END のペアの間でチェーニングされたすべての SQLExecute() ステートメントの合計行数を判別できます。 チェーニングされたステートメントのエラー診断情報は、 SQL_ATTR_CHAINING_END 属性の設定後に使用できるようになります。

この属性を CLI 構成キーワード ArrayInputChain と一緒に使用すると、配列サイズを指定せずに配列入力に影響を与えることができます。 詳しくは、 ArrayInputChain の資料を参照してください。

注: この属性で設定される特定の 32 ビット整数値は、 CLIにとって重要ではありません。 この属性を任意の 32 ビット整数値に設定すると、SQL_ATTR_CHAINING_BEGIN が設定されたときに有効になっていた CLI 配列入力チェーニング・フィーチャーが無効になります。
SQL_ATTR_CLIENT_LOB_BUFFERING
バインドされていない LOB 列について、 LOB ロケーターまたはその基になる LOB データが結果セットに入れて戻されるかどうかを指定します。 デフォルトでは、ロケーターが戻されます。 バインドされていない LOB をアプリケーションがフェッチしてから、 その基になる LOB データを取り出すことが通常必要になるのであれば、 初めから LOB データを取り出すようにすることによって、 アプリケーションのパフォーマンスが改善されることがあります。 このアクションによって、同期の待機とネットワーク・フローの数が少なくなります。 この属性に指定可能な値は、以下のとおりです。
  • SQL_CLIENTLOB_USE_LOCATORS (デフォルト) - LOB ロケーターが戻されます。
  • SQL_CLIENTLOB_BUFFER_UNBOUND_LOBS - 実際の LOB データが戻されます。
SQL_ATTR_CLOSE_BEHAVIOR
カーソルがクローズする時、 カーソルの操作時に獲得された読み取りロックの解放を Db2 サーバーに試行させるかどうかを指定する 32 ビット整数値。 次のどちらかに設定できます。
  • SQL_CC_NO_RELEASE - 読み取りロックは解放されません。 これがデフォルトです。
  • SQL_CC_RELEASE - 読み取りロックは解放されます。

分離 UR または CS でオープンされているカーソルの場合、 カーソルが行から移動した後、読み取りロックは保持されません。 分離 RS または RR でオープンされているカーソルの場合、 SQL_ATTR_CLOSE_BEHAVIOR はそれらの分離レベルのいくつかを変更し、 RR カーソルで非反復読み取りまたは幻像読み取りが行われることがあります。

元々 RR または RS であるカーソルが、 クローズされた後で SQL_ATTR_CLOSE_BEHAVIOR で再度オープンされると、 新しい読み取りロックが獲得されます。

この属性は接続レベルでも設定できますが、 接続レベルで設定する場合は、 この属性が設定された後にオープンされるステートメント・ハンドルのカーソルの振る舞いしか作用しません。

詳しくは、 SQLCloseCursor() 関数を参照してください。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

SQL_ATTR_CLOSEOPEN
カーソルのオープンとクローズにかかる時間を短縮するために、 Db2 は、同じハンドルを使用して 2 番目のカーソルがオープンされると、自動的にオープン・カーソルをクローズします。 このように、クローズ要求がオープン要求とチェーニングされ、 2 つのステートメントが結合されて (2 つの要求ではなく) 1 つのネットワーク要求になると、 ネットワーク・フローは少なくなります。
  • 0 = Db2 は通常の ODBC データ・ソースとして機能します。クローズ・ステートメントとオープン・ステートメントをチェーニングしないで、オープン・カーソルがある場合はエラーを戻します。 この振る舞いはデフォルトです。
  • 1 = クローズ・ステートメントとオープン・ステートメントをチェーニングします。

以前の CLI アプリケーションは、カーソルを明示的にクローズするように設計されているため、このデフォルトの利点はありません。 ただし、新しいアプリケーションでは、カーソルを明示的にクローズするのではなく、 CLI が後続のオープン要求でカーソルをクローズできるようにすることで、この動作を利用できます。

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を参照してください。

SQL_ATTR_COLUMNWISE_MRI 属性は、 Db2 for z/OS サーバーで使用するために指定できます。 Db2 for z/OS以外のサーバーへの接続の場合、 CLI ドライバーは、チェーニング・データを行方向の配列入力に自動的に変換します。

次の場合には、変換は実行されません。
  • パラメーターを SQL_CLOB、SQL_BLOB、 SQL_LONGVARBINARY、SQL_LONGVARGRAPHIC、SQL_DBCLOB、SQL_XML などの LOB データ・タイプにバインドする場合。
  • パラメーターが MERGE または INSERT 操作で SQL_DATA_AT_EXEC 引数を使用してバインドされている場合。これには、 SQLPutData() 関数と SQLParamData() 関数の呼び出しが必要です。
  • 内部バッファー内ですべてのアプリケーション・データを格納するためのスペースを利用できない場合。
SQL_ATTR_CONCURRENCY
カーソルの並行性を指定する 32 ビット整数値。
  • SQL_CONCUR_READ_ONLY = カーソルは読み取り専用です。 更新はできません。 前方スクロールの静的なキー・セット・カーソルでサポートされます。
  • SQL_CONCUR_LOCK = カーソルは、 行を確実に更新できるロックのレベルのうち最低レベルのものを使用します。 前方スクロールのキー・セット・カーソルでサポートされます。
  • SQL_CONCUR_VALUES = カーソルは、値を比較し、オプティミスティック並行性制御を使用します。

静的な前方スクロール・カーソルについては、SQL_ATTR_CONCURRENCY のデフォルト値は、SQL_CONCUR_READ_ONLY です。 キー・セット・カーソルのデフォルト値は、SQL_CONCUR_VALUES です。

この属性は、オープン・カーソルには指定できません。

SQL_ATTR_CURSOR_TYPE 属性 が SQL_ATTR_CONCURRENCY の現行値をサポートしないタイプに変更されると、SQL_ATTR_CONCURRENCY の値は実行時に変更され、 SQLExecDirect() または SQLPrepare() の呼び出し時に警告が出されます。

SQL_ATTR_CONCURRENCY が SQL_CONCUR_READ_ONLY の値に設定されているときに、 SELECT FOR UPDATE ステートメントが実行されるとエラーが戻されます。 SQL_ATTR_CONCURRENCY の値が、SQL_ATTR_CURSOR_TYPE の一部の値ではサポートされるが、SQL_ATTR_CURSOR_TYPE の現行値ではサポートされない値に変更されると、実行時に SQL_ATTR_CURSOR_TYPE の値が変更され、 SQLExecDirect() または SQLPrepare() の呼び出し時に SQLSTATE 01S02 (変更されたオプション値) が発行されます。

SQL_ATTR_CONCURRENCY の値が SQL_CONCUR_LOCK に設定されている場合、この値は以下の条件がすべて満たされたときに SQL_CONCUR_VALUES にプロモートされます。
  • SQL_ROWSET_SIZE または SQL_ATTR_ROW_ARRAY_SIZE が 1 より大きい。
  • データ・ソースは、 Db2 サーバー上のデータベースです。
  • PATCH2 構成キーワードが 73に設定されている。
指定された並行性がデータ・ソースによってサポートされていない場合、 CLI は別の並行性を置換し、SQLSTATE 01S02 (オプション値が変更されました) を返します。 代用の順序は、以下のようにカーソルのタイプによって異なります。
  • 前方スクロール: SQL_CONCUR_LOCK が、 SQL_CONCUR_ROWVER および SQL_CONCUR_VALUES の代わりに使用される
  • 静的: SQL_CONCUR_READ_ONLY だけが有効
  • キー・セット: SQL_CONCUR_VALUES が、SQL_CONCUR_ROWVER の代わりに使用される
注: 以下の値も ODBCによって定義されていますが、 CLI ではサポートされていません。
  • SQL_CONCUR_ROWVER = カーソルは、オプティミスティック並行性制御を使用します。
SQL_ATTR_CURSOR_HOLD
32 ビット整数の値を持つ IBM 拡張機能。 この値は、この StatementHandle に関連したカーソルを COMMIT 操作前と同じ位置に保持するかどうかを指定します。 この値は、アプリケーションがステートメントを再実行せずにフェッチできるかどうかも指定します。
  • SQL_CURSOR_HOLD_ON (これはデフォルト値です)
  • SQL_CURSOR_HOLD_OFF

StatementHandle が最初に割り振られるときのデフォルト値は、SQL_CURSOR_HOLD_ON です。

このオプションは、 この StatementHandle に関連したオープン・カーソルがある場合には設定できません。

デフォルトのカーソル保留モードは、 CURSORHOLD CLI または ODBC 構成キーワードを使用して設定することもできます。

注: SQL_ATTR_CURSOR_HOLD 属性は、ストアード・プロシージャーによって返される結果セットには影響しません。 ストアード・プロシージャーによって戻される Resultset 値は、ストアード・プロシージャー内のカーソルが WITHHOLD として宣言されている場合、コミットまたはロールバックの後も保持されます。 ストアード・プロシージャー内のカーソルが WITHHOLD として宣言されていない場合、ストアード・プロシージャーによって返される Resultset 値は、コミットまたはロールバック後に保持されません。
SQL_ATTR_CURSOR_SCROLLABLE
アプリケーションで必要とされるサポートのレベルを指定する 32 ビット整数。 この属性を設定すると、 SQLExecute() および SQLExecDirect()に対する後続の呼び出しに影響します。 以下の値がサポートされています。
  • SQL_NONSCROLLABLE = 両方向スクロール・カーソルは、 ステートメント・ハンドルで必要ではありません。 アプリケーションがこのハンドルで SQLFetchScroll() を呼び出す場合、 フェッチ・オリエンテーション () の有効な値は SQL_FETCH_NEXT のみです。 この値がデフォルトです。
  • SQL_SCROLLABLE = 両方向スクロール・カーソルが、ステートメント・ハンドルに必要です。 SQLFetchScroll()を呼び出すときに、アプリケーションは、 フェッチ・オリエンテーションの任意の有効な値を指定して、順次モード以外のモードでカーソル位置決めを行うことができます。
SQL_ATTR_CURSOR_SENSITIVITY
ステートメント・ハンドル上のカーソルが、 別のカーソルによる結果セットへの変更に影響を受けるかどうかを指定する 32 ビット整数。 この属性を設定すると、 SQLExecute() および SQLExecDirect()に対する後続の呼び出しに影響します。 以下の値がサポートされています。
  • SQL_UNSPECIFIED = カーソル・タイプが何であるか、 およびステートメント・ハンドル上のカーソルが、 別のカーソルによる結果セットへの変更に影響を受けるかどうかは指定されません。 ステートメント・ハンドル上のカーソルは、変更のいずれからも影響を受けないか、 その一部、あるいは全部から影響を受けるようにすることができます。 この値がデフォルトです。
  • SQL_INSENSITIVE = ステートメント・ハンドル上のすべてのカーソルが示す結果セットには、 別のカーソルがその結果セットに対して行った変更が反映されません。 インセンシティブ・カーソルは、読み取り専用です。 これは、読み取り専用である並行性のある静的カーソルと同じです。
  • SQL_SENSITIVE = ステートメント・ハンドル上のすべてのカーソルは、 別のカーソルによる結果セットへのすべての変更を可視にします。
SQL_ATTR_CURSOR_TYPE
カーソル・タイプを指定する 32 ビット整数値。 以下の値がサポートされています。
  • SQL_CURSOR_FORWARD_ONLY = カーソルは前方スクロールのみ可能です。 これがデフォルトです。
  • SQL_CURSOR_STATIC = 結果セット内のデータは、静的です。
  • SQL_CURSOR_KEYSET_DRIVEN = CLI は、純粋なキー・セット・カーソルをサポートします。 SQL_KEYSET_SIZE ステートメント属性は無視されます。 キー・セットのサイズを制限するには、アプリケーションは、 SQL_ATTR_MAX_ROWS 属性を 0 以外の値に設定することによって、 結果セットのサイズを制限する必要があります。
  • SQL_CURSOR_DYNAMIC = 動的両方向スクロール・カーソルは、 結果セットに対するすべての変更 (挿入、削除、および更新) を検出し、 結果セットに対して挿入、削除、および更新を実行します。 動的カーソルは、 Db2 for z/OS バージョン 8.1 以降のサーバーにアクセスする場合にのみサポートされます。

このオプションは、オープン・カーソルには指定できません。

指定されたカーソル・タイプがデータ・ソースでサポートされていない場合、 CLI は別のカーソル・タイプを置換し、SQLSTATE 01S02 (オプション値が変更されました) を戻します。 混合カーソルまたは動的カーソルの場合、 CLI はキー・セット・ドリブン・カーソルまたは静的カーソルを順に置換します。

SQL_ATTR_DB2_NOBINDOUT
フェッチ操作中に、クライアントがデータ変換およびそれに関連する作業をいつ、どこで実行するかを指定する Boolean 値属性。 この属性のデフォルト値は 0 (偽) です。 1 (真) に設定するのはフェデレーテッド・データベースに接続した場合だけにしてください。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

SQL_ATTR_DB2ZLOAD_BEGIN
この属性は、CLI でファイルのデータを LOAD ユーティリティーに移せるようにします。 CLI は SQLPUTData() を呼び出してデータをファイルから取り出し、データをストリームとしてサーバーに直接渡します。 そのデータが LOAD ユーティリティーに対する入力となります。

CLI は、属性が SQL_TRUE に設定されている場合にのみ、接続されている Db2 for z/OS サーバーに対して LOAD ユーティリティーを実行します。 この属性を設定すると、その操作において LOAD が終了するまで、アプリケーションから PREPARE ステートメントや EXECUTE ステートメントを実行することができなくなります。

データ・ストリームが完了すると、アプリケーションは SQL_ATTR_DB2ZLOAD_END を呼び出して LOAD 操作を終了できます。

SQL_ATTR_DB2ZLOAD_BEGIN 属性の設定の例:
RC = SQLSetStmtAttr(
     		hstmt,
     		SQL_ATTR_DB2ZLOAD_BEGIN,                        
     		(SQLPOINTER)SQL_TRUE,
     		SQL_IS_INTEGER);
SQL_ATTR_DB2ZLOAD_END
この属性を使用して、LOAD 操作の終わりを示します。 LOAD ユーティリティーおよび Db2 for z/OS へのデータのストリーミングにより、LOAD の実行が完了します。 この属性を SQL_TRUE に設定すると、CLI は、接続されている Db2 for z/OSに対して SQL_ATTR_DB2ZLOAD_BEGIN 属性によって開始された LOAD ユーティリティーを終了できます。

この属性の戻り値は、LOAD 操作が成功したか失敗したかを示します。 LOAD が終了したら、SQLGetDiagField() で「SQL_DIAGDB2ZLOAD_RETCODE」や「SQL_DIAG_DB2ZLOAD_LOAD_MSGS」を使用して、LOAD の状況を確認できます。

SQL_ATTR_DB2ZLOAD_BEGIN 属性の設定の例:
RC = SQLSetStmtAttr(hstmt,
     		SQL_ATTR_DB2ZLOAD_END,                        
     		(SQLPOINTER)SQL_TRUE,
     		SQL_IS_INTEGER);
SQL_ATTR_DB2ZLOAD_LOADSTMT
LOAD 操作のユーティリティー制御ステートメントを指定します。 LOAD に関するこのステートメント属性を NULL にすることはできません。また、32 704 バイトを超えることもできません。 SQL ステートメントは char 形式で指定できます。 LOAD ステートメントを指定しないと、CLI が LOAD 操作を開始しても失敗します。
SQL_ATTR_DB2ZLOAD_MSGFILE

アプリケーションがサーバーから返されるロード・メッセージを受信できるファイルの名前を指定します。

ユーザーは、SQL_ATTR_DB2ZLOAD_END を使用して zload の終了後にこの属性を呼び出して、サーバーによって返されるロード・メッセージを取得できます。

指定するファイル名は、アプリケーションが書き込み権限を持つ絶対パスまたは相対パスにする必要があります。

アプリケーションによって指定されたファイル名が存在しない場合には、CLI によってファイルが作成されます。 また CLI は、ファイルが既に存在する場合にはファイルを切り捨てます。 ファイルの作成またはファイルへの書き込み時に問題が発生する場合には、CLI はサイレントで問題を無視し、続行します。

SQL_ATTR_DB2ZLOAD_UTILITYID
LOAD 操作のユーティリティー ID を指定します。

ユーティリティー ID は 1 バイト文字のストリングで、任意の英字 (A から Z、大文字、および小文字)、任意の数字 (0 から 9)、および #、$、@、¢、!、またはピリオド (.) のみで構成することができます。 指定するユーティリティー ID のストリング値の最大長は、16 個の 1 バイト文字を超えてはなりません。 ユーティリティー ID は char 形式で指定できます。

ユーティリティー ID の値を指定しないと、ドライバーは「ZLDdddmmhhsstttt」形式のデフォルト値を生成します。ddd は年間通算日 (001 から 365 または 366 まで)、hh は時間 (00 から 23 まで)、mm は分 (00 から 59 まで)、ss は秒 (00 から 59 まで)、tttt はマイクロ秒の最後の 4 桁 (0000 から 9999 まで) です。

SQL_ATTR_DB2ZLOAD_UTILITYID 属性の設定の例:
RC = SQLSetStmtAttr(hstmt,
     		SQL_ATTR_DB2ZLOAD_UTILITYID,                        
     		(SQLPOINTER)”DSNZLOAD”,SQL_NTS);
SQL_ATTR_DEFERRED_PREPARE
対応する実行要求が発行されるまで、PREPARE 要求を据え置きにするかどうかを指定します。
  • SQL_DEFERRED_PREPARE_OFF = 据え置き準備を無効にする。 PREPARE 要求は、発行された時点で実行されます。
  • SQL_DEFERRED_PREPARE_ON (デフォルト値) = 据え置き準備を有効にする。 対応する実行要求が発行されるまで、PREPARE 要求の実行を据え置きます。 この 2 つの要求はその後 1 つのコマンド/応答フロー (2 つではなく) に結合されるので、ネットワーク・フローが最小化されてパフォーマンスが向上します。

    ターゲット Db2 データベースまたは DDCS ゲートウェイが据え置き準備をサポートしない場合、クライアントはその接続の据え置き準備を使用不可にします。

注: 据え置き準備が使用可能な場合、通常、PREPARE ステートメントの SQLCA の SQLERRD (3) および SQLERRD (4) に戻される行およびコストの見積もりは、ゼロになる可能性があります。 これは、これらの値を使用して SQL ステートメントを続行するかどうかを決定するユーザーにとっては重要です。

デフォルトの据え置き準備モードは、 DEFERREDPREPARE CLI または ODBC 構成キーワードを使用して設定することもできます。

注: これは IBM 定義の拡張機能です。
SQL_ATTR_EARLYCLOSE
最後のレコードがクライアントに送られた際に、 クライアントのカーソルをクローズせずにサーバーの一時カーソルを自動的にクローズできるようにするかどうかを指定します。
  • SQL_EARLYCLOSE_OFF = サーバーの一時カーソルを先にクローズしない。
  • SQL_EARLYCLOSE_ON = サーバーの一時カーソルを先にクローズする (デフォルト値)。

    これによって、カーソルが既にクローズされたことを認識できるため、明示的にクローズするためのステートメントを発行しなくても済み、ネットワーク要求が節減されます。

    このオプションをオンにすると、小さい結果セットを多数使用するアプリケーションの処理速度が向上します。

    EARLYCLOSE フィーチャーは、カーソル・タイプが SQL_CURSOR_FORWARD_ONLY 以外である場合は使用されません。

注: これは IBM 定義の拡張機能です。
SQL_ATTR_ENABLE_AUTO_IPD
IPD の自動移植を実行するかどうかを指定する 32 ビット整数値。
  • SQL_TRUE = SQLPrepare()の呼び出し後に IPD の自動移植をオンにします。
  • SQL_FALSE = SQLPrepare()を呼び出した後、IPD の自動移植をオフにします。
ステートメント属性 SQL_ATTR_ENABLE_AUTO_IPD のデフォルト値は、 SQL_ATTR_AUTO_IPD 接続属性値と同じです。

接続属性 SQL_ATTR_ AUTO_IPD が SQL_FALSE の場合、 ステートメント属性 SQL_ATTR_ENABLE_AUTO_IPD は SQL_TRUE に設定できません。

SQL_ATTR_EXTENDED_INDICATORS
32 ビットの整数。この値により、ステートメントの実行時にアプリケーション変数の内容が置換される SQL ステートメント内での位置を示す必要がなくなります。 この属性の値は次のとおりです。
  • SQL_EXTENDED_INDICATOR_ENABLE: ユーザーは SQLBindParameter / SQLExtendedBind メソッドに SQL_UNASSIGNED と SQL_DEFAULT_PARAM を示す値を指定できます。
  • SQL_EXTENDED_INDICATOR_NOT_SET (デフォルト): アプリケーションが SQL_UNASSIGNED と SQL_DEFAULT_PARAM を使用しようとする前にこれらの値が使用可能になっていないと、ユーザーは InvalidArgument 値エラーを受け取ります。
  • Db2 および Db2 for z/OS 10 データ・サーバーでの拡張標識のサポートは、バージョン 9.7 フィックスパック 2 で開始されます。 Db2 for IBM® i 7.1 データ・サーバーでの拡張標識のサポートは、バージョン 9.7 フィックスパック 5 で開始されます。
SQL_ATTR_FETCH_BOOKMARK_PTR
バイナリー数ブックマーク値を指すポインター。 SQLFetchScroll()SQL_FETCH_BOOKMARKに等しい FetchOrientation を指定して呼び出されると、 CLI はこのフィールドからブックマーク値を取得します。 このフィールドは、デフォルトで NULL ポインターになります。
SQL_ATTR_FREE_MEMORY_ON_STMTCLOSE
SQLFreeStmt() 関数で指定された SQL_CLOSE アクションが CLI ドライバーによる大容量メモリー割り振りを解放するかどうかを指定するステートメント・レベル属性。 CLI ドライバーは、以下のシナリオで大容量メモリーを割り振ります。
  • Dynamic Data Format フィーチャーをサポートしないサーバーから LOB 列をクライアントがフェッチする場合。
  • クライアントが AllowInterleavedGetData キーワードを設定して SQLGetData() 関数を呼び出したとき。
SQL_ATTR_FREE_MEMORY_ON_STMTCLOSE 属性は、次のいずれかの値に設定することができます。
  • SQL_FREE_MEMORY_ON_STMTCLOSE_NO: デフォルト値。 SQL_CLOSE アクションが実行されても、指定されたシナリオに対する CLI ドライバーによるメモリー割り振りは解放されません。
  • SQL_FREE_MEMORY_ON_STMTCLOSE_YES: SQL_CLOSE アクションが実行されると、指定されたシナリオに対する CLI ドライバーによるメモリー割り振りが解放されます。
SQL_ATTR_FREE_MEMORY_ON_STMTCLOSE 属性の設定の例:
RC = SQLSetStmtAttr(hstmt,
                    SQL_ATTR_FREE_MEMORY_ON_STMTCLOSE ,
                    (SQLPOINTER)SQL_FREE_MEMORY_ON_STMTCLOSE_YES,
                    0);
SQL_ATTR_FREE_MEMORY_ON_STMTCLOSE 属性を接続属性として指定することもでき、値の設定後に割り振られるすべてのステートメント・ハンドルに影響を与えます。
注: これは IBM 定義の拡張機能です。
SQL_ATTR_IMP_PARAM_DESC
IPD へのハンドル。 この属性の値は、ステートメントの初期割り当て時に割り当てられる記述子です。 アプリケーションではこの属性を設定できません。

この属性は、 SQLGetStmtAttr()の呼び出しによって取得できますが、 SQLSetStmtAttr()の呼び出しによって設定することはできません。

SQL_ATTR_IMP_ROW_DESC
IRD へのハンドル。 この属性の値は、ステートメントの初期割り当て時に割り当てられる記述子です。 アプリケーションではこの属性を設定できません。

この属性は、 SQLGetStmtAttr()の呼び出しによって取得できますが、 SQLSetStmtAttr()の呼び出しによって設定することはできません。

SQL_ATTR_INFO_PROGRAMID
アプリケーションとステートメントを関連付ける最大長 80 バイトのユーザー定義文字ストリング。 この属性が設定されると、 Db2 for z/OS バージョン 8 以降では、動的 SQL ステートメント・キャッシュに挿入されたすべてのステートメントにこの ID が関連付けられます。

この属性は、 Db2 for z/OS バージョン 8 以降または IBM Informix Dynamic Server (Informix データベース・サーバー) にアクセスする CLI アプリケーションでのみサポートされます。

SQL_ATTR_INSERT_BUFFERING
この属性は、 パーティション・データベース環境においてバッファリング挿入の最適化を有効にします。 可能な値は、SQL_ATTR_INSERT_BUFFERING_OFF (デフォルト)、 SQL_ATTR_INSERT_BUFFERING_ON、および SQL_ATTR_INSERT_BUFFERING_IGD (重複は無視) です。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

SQL_ATTR_INTERLEAVED_PUTDATA
この属性は、SQLParamData および SQLPutData を使用したインターリービング方式での LOB データの挿入を可能にします。 以下に例を示します。
// Set the attribute
SQLSetStmtAttr(hstmt,
              SQL_ATTR_INTERLEAVED_PUTDATA,
              TRUE,
              0);

//Bind the parameters with DATA_AT_EXEC indicator
blobInd = SQL_DATA_AT_EXEC;

cliRC = SQLBindParameter (hstmt,          /* statement handle      */
                          1,              /* parameter marker index */
                          SQL_PARAM_INPUT, /* it's input parameter  */
                          SQL_C_CHAR,      /* CLI variable is CHARACTER*/
                          SQL_CLOB,        /* table column is CLOB*/
                          10,              /* length of CLI variable */
                          0,              /* scale of decimal digits*/
                          &data1,          /* pointer to CLI variable*/
                          10,              /* buffer length          */
                          &blobInd);


cliRC = SQLBindParameter (hstmt,          /* statement handle      */
                          2,              /* parameter marker index */
                          SQL_PARAM_INPUT, /* it's input parameter  */
                          SQL_C_CHAR,      /* CLI variable is CHARACTER*/
                          SQL_CLOB,        /* table column is CLOB*/
                          10,              /* length of CLI variable */
                          0,              /* scale of decimal digits*/
                          &data2,          /* pointer to CLI variable*/
                          10,              /* buffer length          */
                          &blobInd);


SQLExecute (hstmt);
valuePtr = (SQLPOINTER) 2;
SQLParamData (hstmt, (SQLPOINTER *)&valuePtr);
//update buffer data2
SQLPutData (hstmt, data2, strlen(data2));
valuePtr = (SQLPOINTER) 1;
SQLParamData (hstmt, (SQLPOINTER *)&valuePtr);
//update buffer data1
SQLPutData (hstmt, data1, strlen(data2));
valuePtr = (SQLPOINTER) 2;
SQLParamData (hstmt, (SQLPOINTER *)&valuePtr);
//update buffer data2
SQLPutData (hstmt, data2, strlen(data2));
valuePtr = (SQLPOINTER) 1;
SQLParamData (hstmt, (SQLPOINTER *)&valuePtr);
//update buffer data1
SQLPutData (hstmt, data1, strlen(data2));

valuePtr = (SQLPOINTER) 0;
SQLParamData (hstmt, (SQLPOINTER *)&valuePtr);
この属性は、有効になっている SQLPutData 関数ストリーミングを無効にし、SQL_DATA_AT_EXEC でのデータが SQLParamData(0) でクローズされるまで各パラメーター値がクライアントでバッファーに入れられるようにします。
SQL_ATTR_INTERLEAVED_STREAM_PUTDATA
この属性は、関数ストリーミングを使用したインターリービング方式で、SQLParamData および SQLPutData を使用して LOB データを挿入できるようにします。 ストリーミングは、パフォーマンスを高めるため、内部のステートメント・レベル・バッファーを介さずに、 接続レベルのバッファーに LOB データを直接書き込みます。

SQLExecute、SQLParamData、または SQLPutData の間に新しい属性が設定されると、 アプリケーションは、「関数のシーケンス・エラーです (CLI0125E)」のエラーを受け取ります。 また、このエラーは、 SQLParamData および SQLPutData の順序が正しくない場合にも返されます。

この属性が設定されたステートメント・ハンドルが接続内にある場合、 SQL_ATTR_INTERLEAVED_STREAM_PUTDATA 属性が有効になっているステートメント・ハンドル用のサーバーへのデータ送信が完了しないうちに、接続バッファーを使用する操作が実行されると、 同じ接続内の全ステートメント・ハンドルが、「関数のシーケンス・エラーです (CLI0125E)」のエラーを受け取ります。 SQL_ATTR_INTERLEAVED_STREAM_PUTDATA 属性が有効になっているステートメント・ハンドル用の SQLParamData および SQLPutData 呼び出しは、 他のステートメント・ハンドルによって接続バッファーを使用する操作が実行される前に、 すべて完了していなければなりません。 ストリーミングを使用する場合の制限について詳しくは、 StreamPutData CLI/ODBC 構成キーワードを参照してください。

インターリーブド・パラメーター・セットの全パラメーターのデータの終わりを示すには、 パラメーター番号 0 を指定して SQLParamData を呼び出します。 アプリケーションは、 パラメーター番号 0 を指定して SQLParamData を呼び出すことによって、 全パラメーターのデータの終わりを明示的に示さなければなりません。

単一のパラメーターのデータの終わりを示すには、そのパラメーター番号の負の値を指定して SQLParamData を呼び出します。 例えば、パラメーター番号 4 のデータ・ストリームの終わりを示すには、アプリケーションは SQLParamData(-4)を指定する必要があります。 アプリケーションは、負の値のパラメーター番号を使用して、 パラメーターのデータの終わりを必ず示さなければなりません。 ストリーミングされているパラメーターのデータの終わりをアプリケーションが示す場合、 CLI は次のパラメーターのデータをストリーミングすることができます。 これによってパフォーマンスが向上します。

以下は、 LOB データのインターリービングについて、負の値のパラメーター番号を使用して単一パラメーターのデータの終わりを示す方法、および、パラメーター番号 0 を使用して全パラメーターのデータの終わりを示す方法の例です。
// Set the SQL_ATTR_INTERLEAVED_STREAM_PUTDATA attribute
SQLSetStmtAttr(hstmt, SQL_ATTR_INTERLEAVED_STREAM_PUTDATA, TRUE, 0);

//Bind the parameters with DATA_AT_EXEC indicator
blobInd = SQL_DATA_AT_EXEC;

//declare the statement handle with parameter marker 
index value of 1,
//input parameter SQL_PARAM_INPUT, CLI variable type SQL_C_CHAR, 
table column type CLOB,
//length of CLI variable 10, scale of decimal digits 10, 
and DATA_AT_EXEC indicator
cliRC = SQLBindParameter (hstmt, 1, SQL_PARAM_INPUT, 
SQL_C_CHAR, SQL_CLOB, 
10, 0, &data1, 10, &blobInd);

//declare the next statement handle with 
parameter marker index value of 2
cliRC = SQLBindParameter (hstmt, 2, SQL_PARAM_INPUT, 
SQL_C_CHAR, SQL_CLOB, 
10, 0, &data2, 10, &blobInd);

//declare the next statement handle with 
parameter marker index value of 3
cliRC = SQLBindParameter (hstmt, 3, SQL_PARAM_INPUT, 
SQL_C_CHAR, SQL_CLOB, 
10, 0, &data3, 10, &blobInd);

SQLExecute (hstmt);

//make parameter 2 active
valuePtr = (SQLPOINTER) 2;
SQLParamData (hstmt, (SQLPOINTER *)&valuePtr);  

//buffer data for parameter 2
SQLPutData (hstmt, data2, strlen(data2));

//make parameter 1 active
valuePtr = (SQLPOINTER) 1;
SQLParamData (hstmt, (SQLPOINTER *)&valuePtr);

// stream data for parameter 1
SQLPutData (hstmt, data1, strlen(data2));

//make parameter 2 active 
valuePtr = (SQLPOINTER) 2;
SQLParamData (hstmt, (SQLPOINTER *)&valuePtr);

//buffer data for parameter 2 
SQLPutData (hstmt, data2, strlen(data2));

//make parameter 3 active 
valuePtr = (SQLPOINTER) 3;
SQLParamData (hstmt, (SQLPOINTER *)&valuePtr);

//buffer data for parameter 3 
SQLPutData (hstmt, data1, strlen(data2));

//end of data for parameter 1
valuePtr = (SQLPOINTER) -1;
SQLParamData (hstmt, (SQLPOINTER *)&valuePtr);

//make parameter 2 active
valuePtr = (SQLPOINTER) 2;
SQLParamData (hstmt, (SQLPOINTER *)&valuePtr);

//stream the buffered data for parameter 2
SQLPutData (hstmt, data2, strlen(data2));

//make parameter 3 active valuePtr = (SQLPOINTER) 3;
SQLParamData (hstmt, (SQLPOINTER *)&valuePtr);

//buffer data for parameter 3 
SQLPutData (hstmt, data1, strlen(data2));

//end of data for parameter 3
valuePtr = (SQLPOINTER) -3;
SQLParamData (hstmt, (SQLPOINTER *)&valuePtr);

// indicate end of data for all parameters.
// CLI streams the buffered data for all parameters
valuePtr = (SQLPOINTER) 0;
SQLParamData (hstmt, (SQLPOINTER *)&valuePtr); 
SQL_ATTR_KEYSET_SIZE
CLI は純粋なキー・セット・カーソルをサポートするため、SQL_KEYSET_SIZE ステートメント属性は無視されます。 キー・セットのサイズを制限するには、アプリケーションは、 SQL_ATTR_MAX_ROWS 属性を 0 以外の値に設定することによって、 結果セットのサイズを制限する必要があります。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

SQL_ATTR_LOAD_INFO
db2LoadStruct 型の構造体へのポインター。 db2LoadStruct 構造は、 CLI LOAD 中に使用する必要があるすべての適用可能な LOAD オプションを指定するために使用されます。 このポインターとそのすべての組み込みポインターは、SQL_ATTR_USE_LOAD_API ステートメント属性が設定されてからオフにされるまでのすべての CLI 関数呼び出しの間に有効である必要があることに注意してください。 このため、このポインターと組み込まれたポインターすべては、 ローカルに宣言された構造体ではなく、動的に割り振られたメモリーを指すようにすることをお勧めします。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

SQL_ATTR_LOAD_MODIFIED_BY
CLI LOAD 時に使用されるファイル・タイプ修飾子オプションを指定する char ストリングへのポインター。
SQL_ATTR_LOAD_ROWS_COMMITTED_PTR
処理された合計行数を表す整数へのポインター。 この値は、正常にロードされ、データベースにコミットされた行数と、スキップおよび拒否された行数の合計と等しくなります。 この整数は、32 ビット・プラットフォームでは 32 ビット、 64 ビット・プラットフォームでは 64 ビットです。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

SQL_ATTR_LOAD_ROWS_DELETED_PTR
削除された重複行数を表す整数へのポインター。 この整数は、32 ビット・プラットフォームでは 32 ビット、 64 ビット・プラットフォームでは 64 ビットです。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

SQL_ATTR_LOAD_ROWS_LOADED_PTR
ターゲット表にロードされた行数を表す整数へのポインター。 この整数は、32 ビット・プラットフォームでは 32 ビット、 64 ビット・プラットフォームでは 64 ビットです。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

SQL_ATTR_LOAD_ROWS_READ_PTR
読み取られた行数を表す整数へのポインター。 この整数は、32 ビット・プラットフォームでは 32 ビット、 64 ビット・プラットフォームでは 64 ビットです。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

SQL_ATTR_LOAD_ROWS_REJECTED_PTR
ロードできなかった行数を表す整数へのポインター。 この整数は、32 ビット・プラットフォームでは 32 ビット、 64 ビット・プラットフォームでは 64 ビットです。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

SQL_ATTR_LOAD_ROWS_SKIPPED_PTR
CLI LOAD 操作が開始される前にスキップされた行数を表す整数へのポインター。 この整数は、32 ビット・プラットフォームでは 32 ビット、 64 ビット・プラットフォームでは 64 ビットです。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

SQL_ATTR_LOB_CACHE_SIZE
LOB の最大キャッシュ・サイズ (バイト単位) を指定する、32 ビットの符号なし整数。 デフォルトでは、LOB はキャッシュに入れられません。

詳しくは、 LOBCacheSize CLI/ODBC 構成キーワードを参照してください。

SQL_ATTR_MAXBLKEXT
結果セットに対して Db2 for z/OS サーバーから返される追加の照会ブロックの最大数を設定するために使用される 32 ビット整数値。

SQL_ATTR_MAXBLKEXT は、接続レベルおよびステートメント・レベルの属性です。

可能な値の範囲は 0 から 100 で、デフォルト値はゼロ (0) です。
制約事項: SQL_ATTR_MAXBLKEXT 属性は、前方スクロール・カーソルに対して設定され、かつ以下の属性およびキーワードが設定されていない場合にのみ有効です。
  • SQL_ATTR_MAX_ROWS 属性
  • SQL_ATTR_OPTIMIZE_FOR_NROWS 属性
  • SQL_ATTR_BLOCK_FOR_NROWS 属性
  • OPTIMIZEFORNROWS キーワード
  • BlockForNRows キーワード

使用法について詳しくは、 MaxBlkExt CLI/ODBC および IBM Data Server Driver 構成キーワードを参照してください。

SQL_ATTR_MAX_LENGTH
単一文字またはバイナリー列から取り出せるデータの最大量に対応する 32 ビット整数値。
注: SQL_ATTR_MAX_LENGTH を使用してデータを切り捨てることはできません。 データの切り捨てには、代わりに SQLBindCol() または SQLGetData()BufferLength 引数を使用する必要があります。
SQL_ATTR_MAX_LENGTHに指定された値が使用可能なデータ量より少ないためにデータが切り捨てられた場合、呼び出しSQLGetData()またはフェッチは、SQL_SUCCESS_WITH_INFOおよびSQLSTATE01004(データ切り捨て)を返す代わりにSQL_SUCCESSを返します。 SQL_ATTR_MAX_LENGTH のデフォルト値は 0です。0 は、 CLI が文字タイプまたはバイナリー・タイプのデータに使用可能なすべてのデータを戻そうとすることを意味します。
SQL_ATTR_MAX_LOB_BLOCK_SIZE
LOB または XML データ・ブロックの最大サイズを示す 32 ビット符号なし整数。 正の整数を、最高 2 147 483 647 まで指定してください。 デフォルト設定の 0 は、LOB または XML データ・ブロックのデータ・ブロック・サイズに制限がないことを示します。

データ検索時にサーバーは、最大ブロック・サイズに到達している場合でも、現在行に関するすべての情報をクライアントへの応答に含めます。

MaxLOBBlockSizedb2set レジストリー変数 DB2_MAX_LOB_BLOCK_SIZE の両方が指定されている場合、MaxLOBBlockSize の値が使用されます。

この動作を指定する代替方法として、 MaxLOBBlockSize CLI/ODBC および IBM データ・サーバー・ドライバー構成キーワード を設定することもできます。

SQL_ATTR_MAX_ROWS
照会からアプリケーションに戻す最大行数に対応する 32 ビット整数値。 SQL_ATTR_MAX_ROWS のデフォルト値は 0 です。 0 の場合は、すべてのデータが戻されます。
SQL_ATTR_METADATA_ID
このステートメント属性は ODBCによって定義されていますが、 CLIではサポートされていません。 この属性を設定または取得しようとすると、 SQLSTATE は HYC00 (ドライバーが機能しない) になります。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

SQL_ATTR_NOSCAN
CLI が SQL ストリングのエスケープ節をスキャンするかどうかを指定する 32 ビット整数値。 次の 2 つの有効値があります。
  • SQL_NOSCAN_OFF - SQL ストリングをスキャンして、 エスケープ節シーケンスを探します。 これがデフォルトです。
  • SQL_NOSCAN_ON - SQL ストリングをスキャンしてエスケープ節を探しません。 すべてサーバーに直接送られ処理されます。
このアプリケーションは、 送信する SQL ストリング内にベンダー・エスケープ・シーケンスを使用することがない場合にスキャンをオフにすることを選択できます。 スキャンをオフにすると、スキャンに関連する処理使用量が一部抑えられます。
SQL_ATTR_OPTIMIZE_FOR_NROWS
32 ビット整数値。 n を 0 より大きい整数に設定すると、 "OPTIMIZE FOR n ROWS" 節がすべての選択ステートメントに付加されます。 0 (デフォルト値) に設定すると、この節は追加されません。

デフォルト値は、 OPTIMIZEFORNROWS CLI または ODBC 構成キーワードを使用して設定することもできます。

SQL_ATTR_OPTIMIZE_SQLCOLUMNS
この属性は、使用すべきでない属性となりました。
SQL_ATTR_PARAM_BIND_OFFSET_PTR
動的パラメーターのバインドを変更するためにポインターに追加されるオフセットを示す 32 ビット整数 * 値。 このフィールドが NULL 以外の場合、 CLI はポインターを間接参照し、記述子レコード内の各据え置きフィールド (SQL_DESC_DATA_PTR、SQL_DESC_INDICATOR_PTR、および SQL_DESC_OCTET_LENGTH_PTR) に間接参照された値を追加し、結果のポインター値を使用します。 これはデフォルトで NULL に設定されます。

バインド・オフセットは、常に SQL_DESC_DATA_PTR、 SQL_DESC_INDICATOR_PTR、 および SQL_DESC_OCTET_LENGTH_PTR フィールドに直接追加されます。 オフセットを別の値に変更した場合、新しい値が記述子フィールドの値に直接追加されます。 新しいオフセットは、以前のオフセットを加えたフィールド値に追加されることはありません。

このステートメント属性を設定すると、 APD ヘッダーに SQL_DESC_BIND_OFFSET_PTR フィールドが設定されます。

SQL_ATTR_PARAM_BIND_TYPE
バインド方向を動的パラメーターに使用することを示す 32 ビット整数値。

列方向バインドを選択するには、このフィールドを SQL_PARAM_BIND_BY_COLUMN (デフォルト) に設定します。

行方向のバインドを選択するには、このフィールドを構造体の長さか、または、 動的パラメーターのセットにバインドされるバッファーのインスタンス長に設定します。 この長さには、バインドされるパラメーターのすべてに対するスペースと、 構造体やバッファーの埋め込みが入っていなければなりません。 これは、バインドされるパラメーターのアドレスを指定の長さで増分した際に、 必ず結果が次のパラメーター・セットの同じパラメーターの先頭を指し示すようにするためです。 ANSI C の sizeof 演算子を使用する場合、この動作は保証されます。

このステートメント属性を設定すると、 APD ヘッダーに SQL_DESC_ BIND_TYPE フィールドが設定されます。

SQL_ATTR_PARAM_OPERATION_PTR
SQL ステートメントの実行中にパラメーターを無視するかどうかを指定するのに使用される 16 ビット無符号整数値の配列を指す 16 ビット無符号整数 * 値。 それぞれの値は、SQL_PARAM_PROCEED (パラメーターを実行する) か、 または SQL_PARAM_IGNORE (パラメーターを無視する) に設定します。

APD の SQL_DESC_ARRAY_STATUS_PTR が指し示す配列の状況値を SQL_PARAM_IGNORE に設定することによって、 処理中にパラメーターのセットを無視することができます。 状況値が SQL_PARAM_PROCEED に設定されているか、 配列のどのエレメントも設定されていなければ、パラメーターのセットが処理されます。

このステートメント属性はヌル・ポインターに設定できます。この場合、 CLI はパラメーター状況値を返しません。 この属性はいつでも設定できますが、新しい値は次回 SQLExecDirect() または SQLExecute() が呼び出されるまで使用されません。

このステートメント属性を設定すると、 APD に SQL_DESC_ARRAY_STATUS_PTR フィールドが設定されます。

SQL_ATTR_PARAM_STATUS_PTR
SQLExecDirect() または SQLExecute()への呼び出し後の、パラメーター値の各行の状況情報を含む UWORD 値の配列を指す 16 ビット符号なし整数 * 値。 このフィールドは、SQL_ATTR_PARAMSET_SIZE が 1 より大きい場合にのみ使います。
状況値には以下の値が入ります。
  • SQL_PARAM_SUCCESS: SQL ステートメントは、このパラメーターのセットに対して正常に実行されました。
  • SQL_PARAM_SUCCESS_WITH_INFO: SQL ステートメントは、 このパラメーターのセットに対して正常に実行されました。 ただし、診断データ構造体の中に警告情報があります。
  • SQL_PARAM_ERROR: このパラメーターのセットを処理中にエラーがありました。 診断データ構造体の中に追加のエラー情報があります。
  • SQL_PARAM_UNUSED: このパラメーター・セットは使用できませんでした。 前のパラメーター・セットのいずれかでエラーが発生し、 処理が打ち切られたことが原因とみられます。
  • SQL_PARAM_DIAG_UNAVAILABLE: CLI はパラメーターの配列をモノリシック・ユニットとして扱うため、このレベルのエラー情報は生成しません。
このステートメント属性はヌル・ポインターに設定できます。この場合、 CLI はパラメーター状況値を返しません。 この属性はいつでも設定できますが、新しい値は次回 SQLFetch()SQLFetchScroll()、または SQLSetPos() が呼び出されるまで使用されません。

このステートメント属性を設定すると、 IPD ヘッダーに SQL_DESC_ARRAY_STATUS_PTR フィールドが設定されます。

SQL_ATTR_PARAMOPT_ATOMIC
これは 32 ビット整数値であり、 SQLParamOptions() を使用してパラメーター・マーカーに複数の値を指定した場合に、基礎となる処理を ATOMIC または NOT-ATOMIC コンパウンド SQL のどちらを介して行うかを決定します。 可能な値は次のとおりです。
  • SQL_ATOMIC_YES - 基礎処理で ATOMIC コンパウンド SQL を使用します。 ターゲット・データベースが ATOMIC コンパウンド SQL をサポートする場合は、これがデフォルト値です。
  • SQL_ATOMIC_NO - 基礎処理で NON-ATOMIC コンパウンド SQL を使用します。

ATOMIC コンパウンド SQL をサポートしないサーバーへの接続時に SQL_ATOMIC_YES を指定するとエラーになります (SQLSTATE は S1C00 です)。

SQL_PARC_BATCH が SQL_PARC_BATCH_ENABLE に設定されているときに SQL_ATOMIC_YES を指定すると、CLI0150E エラー・メッセージが返されます。 SQL_PARC_BATCH を SQL_PARC_BATCH_ENABLE に設定する場合は、SQL_ATOMIC_NO を指定する必要があります。

SQL_ATTR_PARAMS_PROCESSED_PTR
現在行の番号を戻すべきバッファーを示す 32 ビット無符号整数 * レコード・フィールド。 パラメーターの各行が処理されていく際に、これはその行番号に設定されます。 これが NULL ポインターであれば、行番号は返されません。

このステートメント属性を設定すると、 IPD ヘッダーに SQL_DESC_ROWS_PROCESSED_PTR フィールドが設定されます。

この属性によって指し示されるバッファーを埋める SQLExecDirect() または SQLExecute() の呼び出しが SQL_SUCCESS または SQL_SUCCESS_WITH_INFO を戻さない場合、バッファーの内容は未定義です。

SQL_ATTR_PARAMSET_SIZE
各パラメーターごとの値の数を指定する 32 ビット無符号整数値。 SQL_ATTR_PARAMSET_SIZE が 1 より大きい場合、APD の SQL_DESC_DATA_PTR、 SQL_DESC_INDICATOR_PTR、および SQL_DESC_OCTET_LENGTH_PTR は配列を示します。 各配列のカーディナリティーは、このフィールドの値と同等です。
このステートメント属性を設定すると、APD ヘッダーに SQL_DESC_ARRAY_SIZE フィールドが設定されます。
注: SQL_ATTR_PARAMSET_SIZE 属性に指定できる最大値は 32767 です。

分離されていない、または信頼されたルーチンでは、配列の挿入はサポートされていません。 SQL_ATTR_PARAMSET_SIZE が 1 より大きい場合、CLI0150E が返されます。

SQL_ATTR_PREFETCH
この属性は、使用すべきでない属性となりました。
SQL_ATTR_PREFETCH_NROWS
この属性により、 CLI は、動的カーソルを除く両方向スクロール・カーソルの指定された行数をプリフェッチできます。

使用できる値は整数の 1 から 1024 までです。 デフォルト値は 0 です (ここで、 CLI はカーソル・データをプリフェッチまたはブロックしません)。

SQL_ATTR_PREFETCH_NROWS 属性の設定の例:
SQINTEGER nrows = 50;
RC = SQLSetStmtAttr(
     		hstmt,
     		SQL_ATTR_PREFETCH_NROWS,                        
     		(SQLPOINTER)nrows,
     		SQL_IS_INTEGER);
SQL_ATTR_QUERY_OPTIMIZATION_LEVEL
SQLPrepare()SQLExtendedPrepare()、または SQLExecDirect()への次の呼び出しで使用される照会最適化レベルを設定する 32 ビット整数値。

使用がサポートされている値は -1 (デフォルト)、0、1、2、3、5、7、および 9 です。

SQL_ATTR_QUERY_OPTIMIZATION_LEVEL ステートメント属性は、 Informix データベース・サーバーの最適化レベルを設定しません。 代わりに Informix オプティマイザディレクティブを使用する必要があります。 詳しくは、 Optimizer ディレクティブ を参照してください。

SQL_ATTR_QUERY_PREFETCH
SQLFetch () API が呼び出された場合に、クライアントがサーバーにプリフェッチ要求を送信できるようにする 32 ビットの整数。 デフォルトでは、この属性は 0 (無効) に設定されています。
この属性の値は次のとおりです。
  • SQL_QUERY_PREFETCH_ON または 1: SQLFetch() API が前方スクロール・カーソルに対して呼び出されたときに、 プリフェッチ複数照会ブロック 機能を使用可能にします。
  • SQL_QUERY_PREFETCH_OFF (デフォルト) または 0: 「複数の照会ブロックのプリフェッチ」機能を無効にします。
  • SQL_QUERY_PREFETCH_DEFAULT または 0: 「複数の照会ブロックのプリフェッチ」機能を無効にします。
SQL_ATTR_QUERY_PREFETCH 属性の設定の例:
RC = SQLSetStmtAttr(hstmt,
                    SQL_ATTR_QUERY_PREFETCH ,
                    (SQLPOINTER)SQL_QUERY_PREFETCH_ON,
                    0);
SQL_ATTR_QUERY_TIMEOUT
SQL ステートメントまたは XQuery 式の実行を待機し始めてから、その実行を打ち切ってアプリケーションに戻るまでの秒数を示す 32 ビット整数値。 このオプションを設定しておけば、長期実行照会を終了するために使用することができます。 デフォルト値の 0 は、サーバーが SQL ステートメントの実行を完了するまで CLI が無期限に待機することを意味します。 CLI は、マルチスレッド化をサポートするすべてのプラットフォームでゼロ以外の値をサポートします。

この照会タイムアウトは、XA の制御操作には影響しません。 XA の制御操作には、xa_open、xa_prepare などの操作があります。

ネイティブ割り込みサポートのないサーバー ( Db2 for z/OS および OS/390®、バージョン 7 以前、および Db2 ( IBM i の場合)など) に対してこの属性を使用する場合は、サーバーの DCS データベース・エントリーをカタログするときに INTERRUPT_ENABLED オプションを設定する必要があります。

INTERRUPT_ENABLED オプションが設定されており、この属性がゼロ以外の値に設定されている場合、 Db2 for IBM i サーバーは接続をドロップし、作業単位をロールバックします。 アプリケーションは、サーバーへの接続が終了したことを示す、SQL30081N エラーを受け取ります。 アプリケーションが追加のデータベース要求を処理するには、アプリケーションがデータベース・サーバーとの新規接続を確立する必要があります。

SQL_ATTR_QUERY_TIMEOUT のために LOAD が中断されることもあります。この場合は、SQL0952N ではなく SQL3005N が返されます。

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 バインド・オプションとバインドされています。
NULLIDR1 および NULLIDRA は予約済みパッケージ・セット名で、使用時には REOPT ONCE および REOPT ALWAYS が暗黙指定されます。 これらのパッケージ・セットは、これらのコマンドで明示的に作成する必要があります。
db2 bind db2clipk.bnd collection NULLIDR1
db2 bind db2clipk.bnd collection NULLIDRA 
SQL_ATTR_REOPT と SQL_ATTR_CURRENT_PACKAGE_SET を同時に指定することはできません。したがって、一方を設定すると、他方は許可されません。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

SQL_ATTR_RETRIEVE_DATA
32 ビット整数値。
  • SQL_RD_ON = SQLFetchScroll() および Db2 CLI v5 以降 SQLFetch()では、カーソルを指定された位置に位置付けた後でデータを検索します。 これがデフォルトです。
  • SQL_RD_OFF = SQLFetchScroll() および Db2 CLI v5 以降 SQLFetch()では、カーソル位置の後にデータを検索しません。
アプリケーションは、SQL_RETRIEVE_DATA を SQL_RD_OFF に設定すれば、行検索に関連したリソースの使用量を増やさずに、行が存在するかどうかの検査や、行のブックマークの検索を行うことができます。
SQL_ATTR_RETRY_ON_MERGE
MERGE ステートメントに対して配列入力チェーニング・フィーチャーを有効にして行える再試行の回数を指定する整数値。 配列入力チェーニング・フィーチャーは、 Db2Db2 ( IBM i の場合)、または Db2 for z/OS サーバーへの接続に対して有効にすることができます。 ColumnwiseMRI キーワードまたは SQL_ATTR_COLUMNWISE_MRI 属性を使用して、 Db2 for z/OS サーバーへの接続時に配列入力チェーニング・フィーチャーを使用可能にすることができます。

SQL_ATTR_CHAINING_BEGIN および SQL_ATTR_CHAINING_END ステートメント属性を指定した ArrayInputChain キーワードは、 Db2 または Db2 ( IBM i の場合) サーバーへの接続時に配列入力チェーニング・フィーチャーを有効にするために使用されます。 Db2 for IBM i サーバーへの接続の場合、 SQL_ATTR_RETRY_ON_MERGE パラメーターは、 Db2 for IBM i V7R1 以降のリリースでサポートされます。

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
  • MERGE 操作でパラメーターが SQL_DATA_AT_EXEC 引数を使用してバインドされている場合は、 SQLPutData() 関数と SQLParamData() 関数を呼び出す必要があります。
  • MERGE 操作に以下のいずれかのステートメント属性が指定されている場合。
    • SQL_ATTR_INTERLEAVED_PUTDATA
    • SQL_ATTR_INTERLEAVED_STREAM_PUTDATA
    • SQL_ATTR_USE_LOAD_API
  • MERGE 操作に配列パラメーターが指定されている場合。
  • Db2 サーバーへの接続で SQL_ATTR_INSERT_BUFFERING ステートメント属性が使用可能になっている場合。
  • CLI ドライバーが、アプリケーション・データを保管するために必要な内部バッファーを割り振ることができない場合。
SQL_ATTR_RETURN_USER_DEFINED_TYPES
SQLDescribeCol()などの関数によって照会されたときに、ユーザー定義タイプの列をユーザー定義タイプとして報告するか、基礎となる基本タイプとして報告するかを指定するブール属性。 デフォルト値は 0 (偽) であり、 列は基になる基本タイプとして報告されます。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

SQL_ATTR_ROW_ARRAY_SIZE
行セット内の行数を指定する 32 ビット整数値。 これは、 SQLFetch() または SQLFetchScroll()への各呼び出しによって返される行数です。 デフォルト値は 1 です。

指定された行セット・サイズが、データ・ソースによってサポートされる最大行セット・サイズを超える場合、 CLI はその値を置換し、SQLSTATE 01S02 (変更されたオプション値) を戻します。

注: SQL_ATTR_ROW_ARRAY_SIZE 属性に指定できる最大値は 32767 です。

このオプションは、オープン・カーソルにも指定できます。

このステートメント属性を設定すると、 ARD ヘッダーに SQL_DESC_ARRAY_SIZE フィールドが設定されます。

SQL_ATTR_ROW_BIND_OFFSET_PTR
列データのバインドを変更するためにポインターに追加されるオフセットを示す 32 ビット整数 * 値。 このフィールドが NULL 以外の場合、 CLI はポインターを間接参照し、記述子レコード内の各据え置きフィールド (SQL_DESC_DATA_PTR、SQL_DESC_INDICATOR_PTR、および SQL_DESC_OCTET_LENGTH_PTR) に間接参照値を追加し、バインド時に新しいポインター値を使用します。 これはデフォルトで NULL に設定されます。

このステートメント属性を設定すると、 ARD ヘッダーに SQL_DESC_BIND_OFFSET_PTR フィールドが設定されます。

SQL_ATTR_ROW_BIND_TYPE
関連付けられたステートメントで SQLFetch() または SQLFetchScroll() が呼び出されたときに使用されるバインディング方向を設定する 32 ビット整数値。 引数 *ValuePtr に定義済み定数 SQL_BIND_BY_COLUMN を指定すると、 列方向のバインドが選択されます。 構造体の長さまたは列のバインド先となるバッファーのインスタンスを指定する *ValuePtr に値を指定すると、 行方向のバインドが選択されます。

*ValuePtr に指定される長さには、バインドされる列のすべてに対するスペースと、 構造体やバッファーの埋め込みが入っていなければなりません。 これは、バインドされる列のアドレスを指定の長さで増分した際に、 必ず結果が次の行の同じ列の先頭を示すようにするためです。 ANSI C の構造体または共用体で sizeof 演算子を使用する場合、 この動作は保証されます。

列方向バインドは、 SQLFetch() および SQLFetchScroll()のデフォルトのバインディング方向です。

このステートメント属性を設定すると、 ARD ヘッダーに SQL_DESC_BIND_TYPE フィールドが設定されます。

SQL_ATTR_ROW_NUMBER
結果セット全体の現在行の番号を示す 32 ビット整数値。 現在行の番号を判別できない場合、または現在行がない場合、 CLI は 0 を戻します。

この属性は、 SQLGetStmtAttr()の呼び出しによって取得できますが、 SQLSetStmtAttr()の呼び出しによって設定することはできません。

SQL_ATTR_ROW_OPERATION_PTR
SQLSetPos()を使用したバルク操作時に行を無視するために使用される UDWORD 値の配列を指す 16 ビット符号なし整数 * 値。 それぞれの値は、 SQL_ROW_PROCEED (バルク操作時に行を含める) または SQL_ROW_IGNORE (バルク操作時に行を除外する) に設定されます。

このステートメント属性は NULL ポインターに設定できます。この場合、 CLI は行状況値を戻しません。 この属性はいつでも設定できますが、新しい値は次回 SQLFetch()SQLFetchScroll()、または SQLSetPos() が呼び出されるまで使用されません。

このステートメント属性を設定すると、 ARD に SQL_DESC_ARRAY_STATUS_PTR フィールドが設定されます。

SQL_ATTR_ROW_STATUS_PTR
SQLFetch() または SQLFetchScroll()への呼び出し後に、行状況値を含む UWORD 値の配列を指す 16 ビット符号なし整数 * 値。 この配列のエレメントの数は、行セット内にある行の数と同じです。

このステートメント属性は NULL ポインターに設定できます。この場合、 CLI は行状況値を戻しません。 この属性はいつでも設定できますが、新しい値は次回 SQLFetch()SQLFetchScroll()、または SQLSetPos() が呼び出されるまで使用されません。

このステートメント属性を設定すると、 IRD ヘッダーに SQL_DESC_ARRAY_STATUS_PTR フィールドが設定されます。

SQL_ATTR_ROWS_FETCHED_PTR
SQLFetch() または SQLFetchScroll()への呼び出し後にフェッチされた行数を戻すバッファーを指す 32 ビット符号なし整数 * 値。

このステートメント属性を設定すると、 IRD ヘッダーに SQL_DESC_ROWS_PROCESSED_PTR フィールドが設定されます。

この属性は、 SQLExtendedFetch()の呼び出しで CLI によって RowCountPtr 配列にマップされます。

SQL_ATTR_ROWCOUNT_PREFETCH
この属性により、 CLI は、結果セット全体をプリフェッチできるように行数を判別できます。 この属性の値は次のうちの 1 つとなります。
  • 0 (デフォルト): オフ
  • 1: オン

SQL_ATTR_ROWCOUNT_PREFETCH を 0 に設定し、スクロール不能の SELECT 専用カーソルを使用して SQLRowCount() を呼び出した場合、すべてのデータがフェッチされるまで行数は使用不可であるため、この関数は RowCountPtr の内容を -1 に設定します。

SQL_ATTR_ROWCOUNT_PREFETCH を 1 に設定し、順方向の SELECT 専用カーソルを使用して SQLRowCount() を呼び出した場合、以下の動作が見られます。
  • SELECT * FROM INSERT | UPDATE | DELETE ステートメントを前方スクロール・カーソルで使用する場合、行カウントは SELECT ステートメントに由来します。 これは、SQL_ATTR_ROWCOUNT_PREFETCH 属性を設定していない場合にこれらのカーソルに設定される、影響を受けた行のカウントとは異なります。
  • すべてのカーソル・データがプリフェッチされます。 この場合、サーバーとの間で複数回の往復が必要になったり、クライアントに相当量のメモリーが必要になったりする可能性があります。
  • プリフェッチされたデータは廃棄されず、アプリケーションのフェッチ要求に応じるために使用されます。

両方向スクロール・カーソルは行カウントを提供できるため、この属性は適用されません。

この属性は、ステートメントを準備する前に指定してください。

制約事項: SQL_ATTR_ROWCOUNT_PREFETCH は、カーソルに LOB または XML が含まれている場合はサポートされません。
SQL_ROWSET_SIZE
CLI アプリケーションでは、 SQLExtendedFetch()ではなく SQLFetchScroll() を使用する必要があります。 また、アプリケーションでは行セットに行数を設定するために、 ステートメント属性として SQL_ATTR_ROW_ARRAY_SIZE を使用してください。

行セット内の行数を指定する 32 ビット整数値。 行セットは、 SQLExtendedFetch()への各呼び出しによって戻される行の配列です。 デフォルト値は 1です。これは、単一の SQLFetch() 呼び出しを行うことと同じです。 このオプションは、カーソルがオープンしていても指定でき、次の SQLExtendedFetch() 呼び出しで有効になります。

SQL_ATTR_SIMULATE_CURSOR (ODBC 2.0)
このステートメント属性は CLI ではサポートされていませんが、 ODBCによって定義されています。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

SQL_ATTR_STMT_CONCENTRATOR
リテラル値を含む動的ステートメントがステートメント・キャッシュを使用するかどうかを指定します。
  • SQL_STMT_CONCENTRATOR_OFF - ステートメント・コンセントレーターの動作は無効です。
  • SQL_STMT_CONCENTRATOR_WITH_LITERALS - サーバーがサポートしている状況の場合、ステートメント・コンセントレーターが有効になり、リテラル値を含む動的ステートメントはステートメント・キャッシュを使用します。 例えば、ステートメントにパラメーター・マーカー、名前付きパラメーター・マーカー、またはリテラルとパラメーター・マーカーおよび名前付きパラメーター・マーカーの組み合わせが含まれている場合、ステートメント・コンセントレーターは有効になりません。

StmtConcentrator CLI/ODBC および IBM データ・サーバー・ドライバー構成キーワード を設定することは、この動作を指定する代替方法です。

注: この属性がバージョン 10 より前の Db2 for z/OS サーバーに対して使用された場合、要求は無視されます。
SQL_ATTR_STMTTXN_ISOLATION
SQL_ATTR_TXN_ISOLATION を参照してください。
SQL_ATTR_STREAM_GETDATA
SQLGetData() 関数のデータ出力ストリームが最適化されているかどうかを示す 32 ビットの符号なし整数。 それらの値は次のとおりです。
  • 0 (デフォルト): CLI は、クライアント上のすべてのデータをバッファーに入れます。
  • 1: データをバッファーに入れる必要のないアプリケーションで Dynamic Data Format をサポートするサーバー上のデータを照会している場合は、1 を指定することによって、データをバッファーに入れる必要がないことを示してください。 CLI クライアントは、データ出力ストリームを最適化します。

Dynamic Data Format がサーバーによってサポートされない場合、このキーワードは無視されます。

StreamGetData1 に設定されていて、 CLI がまだ出力バッファーに戻すことができるバイト数を判別できない場合、切り捨てが行われると、 SQLGetData() は長さとして SQL_NO_TOTAL (-4) を戻します。 それ以外の場合、 SQLGetData() はまだ使用可能なバイト数を戻します。

StreamGetData CLI/ODBC および IBM データ・サーバー・ドライバー構成キーワード の設定は、この動作を指定する代替方法です。

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 パラメーターは、LOB データ・タイプまたは XML データ・タイプの配列形式ではありません。
SQL_ATTR_TXN_ISOLATION
現行の StatementHandle にトランザクション分離レベルを設定する 32 ビット整数値。

このオプションは、 このステートメント・ハンドルに関するオープン・カーソルがある場合には設定できません (SQLSTATE 24000)。

値 SQL_ATTR_STMTTXN_ISOLATION は、SQL_ATTR_TXN_ISOLATION と同義です。 ただし、 ODBC ドライバー・マネージャーは、ステートメント・オプションとしての SQL_ATTR_TXN_ISOLATION の設定を拒否するため、ステートメントごとに変換分離レベルを設定する必要がある ODBC アプリケーションは、 SQLSetStmtAttr() 呼び出しの代わりにマニフェスト定数 SQL_ATTR_STMTTXN_ISOLATION を使用する必要があります。

デフォルトのトランザクション分離レベルは、 TXNISOLATION CLI または ODBC 構成キーワードを使用して設定することもできます。

この属性 (または対応するキーワード) を使用できるのは、 ステートメント・ハンドル用のデフォルトの分離レベルが使用される場合だけです。 一方、アプリケーションがステートメント・ハンドル用の分離レベルを設定していた場合、 この属性には効力はありません。

注: これは、ステートメント・レベルでこのオプションを設定できるようにする IBM 拡張機能です。
SQL_ATTR_USE_BOOKMARKS
アプリケーションがカーソルでブックマークを使用するかどうかを指定する 32 ビット整数値。
  • SQL_UB_OFF = Off (デフォルト値)
  • SQL_UB_VARIABLE = アプリケーションはカーソルでブックマークを使用し、 CLI は可変長ブックマークを提供します (サポートされている場合)。
カーソルと一緒にブックマークを使用するには、アプリケーションは、 カーソルのオープン前に SQL_UB_VARIABLE 値付きのオプションを指定する必要があります。
SQL_ATTR_USE_LOAD_API
データを挿入するために LOAD ユーティリティーが通常の CLI 配列挿入を置き換えるかどうかを示す 32 ビット整数。 可能な値は次のとおりです。
SQL_USE_LOAD_OFF
(デフォルト) 正規の CLI 配列挿入を使ってデータを挿入します。
SQL_USE_LOAD_INSERT
インスタンス・ベースのクライアントでは、LOAD ユーティリティーを使用して表中の既存のデータに追加します。インスタンスなしのクライアントは、外部表を使用して新しい値を挿入します。
SQL_USE_LOAD_REPLACE
LOAD ユーティリティーを使用して、インスタンス・ベースのクライアントで表中の既存のデータを置き換えます。 インスタンスなしのクライアントの場合、この値はサポートされません。
SQL_USE_LOAD_RESTART
以前に失敗した CLI LOAD 操作を再開します。 以前の CLI LOAD 操作が失敗したのが行が挿入されている間である (つまり、SQL_ATTR_USE_LOAD_API ステートメント属性が SQL_USE_LOAD_OFF に設定される前) 場合、CLI LOAD フィーチャーはアクティブのままで、後続の行は CLI LOAD ユーティリティーによって挿入されます。 そうでなく、操作が失敗したのが CLI LOAD がオフにされている間である場合、再開されたロードの完了後、通常の CLI 配列の挿入が再開されます。
SQL_USE_LOAD_TERMINATE
以前に失敗した CLI LOAD 操作をクリーンアップして元に戻します。 ステートメント属性をこの値に設定すると、通常の CLI 配列挿入が再開されます。
SQL_USE_LOAD_WITH_ET
インスタンス・ベースのクライアントとインスタンスなしのクライアントのどちらの場合も、外部表インターフェースを使用して、表中の既存のデータに追加します。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

注: バージョン 9.7フィックスパック 4 以降では、この属性は SQL_ATTR_ASYNC_ENABLEで使用できます。
SQL_ATTR_XML_DECLARATION
XML データが暗黙的にシリアライズされるときに XML 宣言のエレメントが XML データに追加されることを示す 32 ビット符号なし整数。 この属性は XMLSERIALIZE 関数の結果に影響を与えません。

この属性は、オープン・カーソルが関連付けられていないステートメント・ハンドルでのみ指定できます。 ステートメント・ハンドル上にオープン・カーソルがある間にこの属性の値を更新しようとすると、CLI0126E (SQLSTATE HY011) エラーが出され、値は未変更のままになります。

この属性を、必要な各コンポーネントの合計に設定します。
0
宣言またはバイト・オーダー・マーク (BOM) は出力バッファーに追加されません。
1
ターゲット・エンコードが UTF-16 または UTF-32 の場合、該当するエンディアン (リトル・エンディアンまたはビッグ・エンディアン) のバイト・オーダー・マーク (BOM) が出力バッファーの前に付加されます。 (UTF-8 BOM がある場合でも、ターゲット・エンコードが UTF-8 であっても、Db2 は UTF-8 BOM を生成しません。)
2
XML バージョンのみが含まれる最小限の XML 宣言が生成されます。
4
ターゲットのエンコードを識別するエンコード属性が、生成された XML 宣言に追加されます。 そのため、この設定が有効になるのは、この属性の値を計算する際に設定 2 も含まれている場合に限ります。
SQLSetStmtAttr() または SQLSetStmtOption() を使用して他の値を設定しようとすると、 CLI0191E (SQLSTATE HY024) エラーになり、値は変更されません。

デフォルト設定は 7 です。これは、XML バージョンとエンコード属性を含む BOM および XML 宣言が暗黙的なシリアライズ中に生成されることを示します。

この属性は接続ハンドルで指定することもでき、値の変更後に割り振られるステートメント・ハンドルに影響を与えます。 既存のステートメント・ハンドルは元の値を保持します。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

SQL_ATTR_XQUERY_STATEMENT
現行のステートメント・ハンドルに関連したステートメントが XQuery 式か、SQL ステートメントか、または照会であるかを指定する 32 ビット整数値。 これは、XQuery 式の前に「XQUERY」キーワードを付けない CLI アプリケーションで使用できます。 以下の値がサポートされています。
SQL_TRUE
現行のステートメント・ハンドルで実行される次のステートメントが XQuery 式として処理されます。 サーバーが XQuery をサポートしない場合、この属性を SQL_TRUE に設定すると、警告 CLI0005W (SQLSTATE 01S02) が出され、属性の値は未変更になります。
SQL_FALSE (デフォルト)
現行のステートメント・ハンドルで実行される次のステートメントが SQL ステートメントとして処理されます。
この属性は、次の SQLPrepare() または SQLExecDirect() 関数呼び出しで有効になります。

この属性は、 Informix データベース・サーバーにアクセスする場合はサポートされません。

SQL_ATTR_LOAD_REPLACE_OPTION

LOAD REPLACE 後に渡される値を使用することを CLI LOAD ユーティリティーに知らせる 32 ビット整数。 渡される値に基づいて、ディクショナリーに対して該当するアクションが取られます。 以下の値がサポートされています。

SQL_LOAD_KEEPDICTIONARY

REPLACE 後に KEEPDICTIONARY オプションを使用します。 これは、行オーガナイズ表のデフォルト・オプションです。

SQL_LOAD_RESETDICTIONARY

REPLACE 後に RESETDICTIONARY オプションを使用します。 これは、カラム・オーガナイズ表のデフォルト・オプションです。

SQL_LOAD_RESETDICTIONARYONLY

REPLACE 後に RESETDICTIONARYONLY オプションを使用します。 このオプションは、カラム・オーガナイズ表のみに適用できます。

SQL_LOAD_REPLACE_DEFAULT

REPLACE 後にデフォルト・オプションを使用します。 KEEPDICTIONARY は行オーガナイズ表のデフォルト値であり、RESETDICTIONARY は db2Load() API が内部で使用するカラム・オーガナイズ表のデフォルト値です。

この属性にはデフォルト値がありません。

この属性は LUW データベース・サーバーに対してのみサポートされます。 他のデータベース・サーバーに対して使用された場合、SQLSetStmtAttr はエラーをスローせず、この属性は無視されます。 この属性は、SQLSetStmtAttr() および SQLGetStmtAttr() API を介してのみサポートされます。 非推奨の SQLSetStmtOption() および SQLGetStmtOption() API を介してはサポートされません。

SQL_USE_LOAD_REPLACE 値を使用してステートメント属性 SQL_ATTR_USE_LOAD_API を設定する必要があります。