allowDynamicSQL プロパティー

pureQueryXML ファイルに取り込まれていない SQL ステートメント、または取り込まれているがバインドされていない SQL ステートメントをアプリケーションで動的に実行できるようにするかどうかを指定します。
このプロパティーは、executionModeSTATIC である場合にのみアプリケーションに適用されます。

このプロパティーには、以下の値を指定できます。

TRUE
アプリケーションは、取り込まれていない SQL ステートメントを動的に実行します。 また、pureQueryXML ファイルに取り込まれているが、バインドしないように構成されている SQL ステートメントも動的に実行します。 pureQuery Runtime は、isBindable 属性から、pureQueryXML ファイル内の SQL ステートメントがバインドされているかどうかを判別します。属性の値が TRUE の場合は、ステートメントはバインドされています。FALSE の場合は、ステートメントはバインドされていません。

これはデフォルト値です。

まだ取り込むかバインドしていない SQL ステートメントを見つけられるように、 アプリケーションで SQLExceptions をスローするようにする場合には、 allowDynamicSQL を TRUE に設定しないようにすることもできます。

FALSE
pureQuery は、取り込まれていない SQL ステートメントまたはアンバインドされた SQL ステートメントをメソッドが使用した場合に、例外をスローします。 以下は、これが原因で例外が発生する可能性のあるメソッドの一部です。
  • Java アプリケーションの場合:
    • Connection.prepareStatement()
    • Statement.addBatch()
    • Statement.execute()
    • Statement.executeQuery()
    • Statement.executeUpdate()
  • CLI アプリケーションの場合:
    • SQLPrepare()
    • SQLExecute()
    • SQLExecDirect()

注: allowDynamicSQL プロパティーが TRUE に設定されている場合、 特殊レジスターを設定する SQL SET ステートメント、または特殊レジスターの設定に影響を与える JDBC 接続メソッドは、pureQuery Runtime の制約を受けません。 ステートメントは、pureQueryXML ファイル内に含まれるステートメントかどうかに関係なく、常に許可されます。
オプティミスティック・ロックを使用して実行される SQL ステートメントは、静的には実行できません。 そのため、pureQuery Runtime は、オプティミスティック・ロックを使用して実行されたステートメントをキャプチャーしません。 このようなステートメントは、pureQuery Runtime オプション allowDynamicSQLcapturedOnly の影響を受けません。 オプティミスティック・ロックを有効にするには、次のようにします。

DB2Connection.prepareDB2OptimisticLockingQuery
DB2Statement.executeDB2OptimisticLockingQuery

以下の表で、capturedOnlyexecutionMode、および allowDynamicSQL の組み合わせと、結果として実行される操作を示します。

表 1. capturedOnly、executionMode、および allowDynamicSQL の組み合わせと、発生する操作:
capturedOnly executionMode allowDynamicSQL SQL ステートメントの突き合わせ 結果
TRUE STATIC TRUE あり isBindable = True、SQL ステートメントを静的に実行する

isBindable = False、SQL ステートメントを動的に実行する

TRUE STATIC/DYNAMIC TRUE/FALSE なし エラーを返す
TRUE STATIC FALSE あり isBindable = True、SQL ステートメントを静的に実行する

isBindable = False、エラーを返す

TRUE DYNAMIC TRUE/FALSE あり SQL ステートメントを実行する
FALSE STATIC TRUE あり isBindable = True、SQL ステートメントを静的に実行する

isBindable = False、SQL ステートメントを動的に実行する

FALSE STATIC TRUE なし SQL ステートメントを動的に実行する
FALSE STATIC FALSE あり isBindable = True、SQL ステートメントを静的に実行する

isBindable = False、エラーを返す

FALSE STATIC FALSE なし エラーを返す
FALSE DYNAMIC TRUE/FALSE あり/なし SQL ステートメントを実行する

DB2 CLI および IBM Data Server Driver の使用上の注意

DB2® コール・レベル・インターフェースまたは IBM® Data Server Driver と pureQuery Runtime を一緒に使用する場合は、pureQuery Runtime プロパティーを構成キーワードとして使用できます。

IBM CLI キーワードの構文
allowDynamicSQL = TRUE | FALSE
IBM Data Server Driver 構成の構文
< パラメーター名="allowDynamicSQL" 値="TRUE | FALSE" />
同等の IBM Data Server Provider for .NET 接続ストリング・キーワード
該当なし

フィードバック