以下のステートメント属性は、 DB2 CLI アプリケーションによって設定することが必要な場合があります。
このオプションを設定することにより、アプリケーションに戻される行数を制限することができます。アプリケーション (とりわけ、メモリー資源が制限されているクライアント上のアプリケーション) で非常に大きな結果セットが不用意に生成されて処理できなくなるといった状況を避けるために、このオプションを使用することができます。
DB2 UDB v6 では、SQL_ATTR_MAX_ROWS を設定すると、ステートメントに "OPTIMIZE for n ROWS" および "Fetch n Rows ONLY" 文節が追加されます。その他のサーバーでは、完全な結果セットはサーバーで引き続き生成され、 DB2 CLI が取り出すのは SQL_ATTR_MAX_ROWS 行までです。
このステートメント属性は、このステートメントのカーソルを CURSOR WITH HOLD 文節と同等のものを用いて定義するかどうかを決めます。
CURSOR WITH HOLD を必要としないステートメントが SQL_CURSOR_HOLD_OFF に設定されていれば、ステートメント・ハンドルに関連する資源は DB2 CLI によってよりよく活用されます。
注: | ODBC アプリケーションの多くは、コミット後にカーソル位置が保持されている場合に、省略時の動作を予期します。 |
DB2 CLI では分離レベルをステートメント・レベルで設定することが可能です (ただし、分離レベルは接続レベルで設定することをお勧めします)。分離レベルとは、可能な並行性のレベル、およびステートメントを実行するのに必要なロックのレベルを決めるものです。
すべてのステートメントが省略時の分離レベルのままにされているのではなく、要求された分離レベルに設定されていれば、ステートメント・ハンドルに関連する資源は DB2 CLI によってよりよく活用されます。以上のことは、接続している DBMS のロックおよび分離レベルについて完全に理解している場合にのみ行ってみてください。分離レベルとその影響の完全な説明については、SQL 解説書 を参照してください。
アプリケーションは、並行性を最大にするように、最小の分離レベルを使用すべきです。