pureQueryXML
ファイルに取り込まれていない SQL ステートメント、または取り込まれているがバインドされていない SQL ステートメントをアプリケーションで動的に実行できるようにするかどうかを指定します。
このプロパティーは、executionMode が STATIC である場合にのみアプリケーションに適用されます。このプロパティーには、以下の値を指定できます。
- 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 オプション
allowDynamicSQL や
capturedOnly の影響を受けません。
オプティミスティック・ロックを有効にするには、次のようにします。
DB2Connection.prepareDB2OptimisticLockingQuery
DB2Statement.executeDB2OptimisticLockingQuery
以下の表で、capturedOnly、executionMode、および 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 接続ストリング・キーワード
- 該当なし