「"分離レベルの指定"」というタイトルのセクションに、 次の段落を追加します。
アプリケーションを準備またはバインドするときに分離レベルをパッケージ・レベルで 設定することに加え、分離レベルをステートメント・レベルで設定することができます。 ステートメント・レベルの分離レベルは、WITH 文節を使用して指定します。
ステートメント・レベル分離をサポートしているのは以下の SQL ステートメントです。
ステートメント・レベル分離の使用に関しては、いくつかの条件があります。
「"最適化クラスの調整"」というタイトルのセクションで、 現在のレベル 2 の情報を次の内容に置き換えます。
最適化クラス 2 はクラス 5 と酷似しています。 ただしクラス 2 は、ダイナミック・プログラミングではなく貧欲結合列挙を使用します。 このクラスは、貧欲結合列挙アルゴリズムを使用するすべての最適化クラスの中で 最高の最適化を提供します。 このクラスでは、複雑な照会の場合に考慮する選択対象が少ししかないため、 クラス 3 以上の場合よりもコンパイル時間が短縮されます。 そのため、 このクラスは意思決定支援またはオンライン分析処理 (OLAP) 環境での 非常に複雑な照会に使用することをお勧めします。 このような場合、同じ照会はまれにしか実行されないため、 アクセス・プランが照会の次のオカレンスまでキャッシュに残ることはまずありません。
この新しいセクションは、「"複合 SQL"」というセクションの後に追加します。
動的複合ステートメントは、他の SQL ステートメントを 1 つの実行可能なブロックに グループ化したものです。 動的複合ステートメントでは、SQL 変数の宣言、SQLSTATE に関連する条件の宣言、 および 1 つ以上の SQL 手続きステートメントの指定が可能です。 動的複合ステートメントでエラーが発生した場合、 前の SQL ステートメントはすべてロールバックされ、 動的複合ステートメントの残りの SQL ステートメントは処理されません。
動的複合ステートメントはトリガー、SQL 関数、または SQL メソッドに組み込むことができ、 また、動的 SQL ステートメントを使用して実行することができます。 この実行可能ステートメントは、動的に準備することができます。 ステートメントを呼び出す特権は必要ありませんが、 そのステートメントに関連する許可 ID は複合ステートメント内の組み込み SQL ステートメントを 呼び出すために必要な特権を持っていなければなりません。
変数は変数宣言のサブステートメントにあります。 条件は、条件宣言の SQLSTATE 値に基づくサブステートメントにあります。 動的複合ステートメントは DB2 によって単一ステートメントとしてコンパイルされます。 このステートメントは、制御フロー・ロジックをほとんど含まない、有効なデータ・フローを 含む短いスクリプトに対して効果的に使用することができます。 ネストした複雑な制御フローを持つ大きな構成の場合、SQL プロシージャーの 使用を検討してください。
動的複合ステートメント内では、複数の制御フロー・ロジック・ステートメントを 使用できます。 このステートメントには、FOR ステートメント、IF ステートメント、ITERATE ステートメント、 および WHILE ステートメントがあります。 これらのステートメント、および、サポートされているこれ以外のステートメントの詳細については、 SQL 解説書 を参照してください。