DDL ステートメントはその実行時に、DDL ステートメントが作成、変更、またはドロップするオブジェクトを参照するすべての静的 SQL DML ステートメントのアクセス・プランを無効にします。 DML ステートメントは、そのアクセス・プランが無効にされた場合でも、引き続き実行できます。 DML ステートメントを実行しても、警告またはエラー・メッセージは生成されません。
アクセス・プランが無効にされると、以下の 2 とおりの結果があり得ます。
どちらの場合にも、pureQuery 以外の API アプリケーションは、固定したアクセス・パスおよびパフォーマンス向上の可能性という、静的 SQL の 2 つの主要な利点を失います。
IBM® は、クライアントの最適化 とともに使用するアプリケーションでは DDL ステートメントを実行しないことを推奨しています。
バインドされていて executionMode の値が STATIC である DDL ステートメントをアプリケーションで使用している場合、pureQuery はその DDL ステートメントを実行します。
また、バインドはされておらず、executionMode の値は STATIC、allowDynamicSQL の値は TRUE である DDL ステートメントをアプリケーションで使用している場合も、pureQuery はその DDL ステートメントを実行します。ただし、バインドはされておらず、executionMode の値は STATIC、allowDynamicSQL の値は FALSE である DDL ステートメントをアプリケーションで使用している場合、pureQuery はその DDL ステートメントを実行しますが、"静的ステートメントが見つかりません (Static statement not found)" という例外をスローします。