captureStatementBatchSQL プロパティー

最大で maxNonParmSQL プロパティーで指定された SQL ステートメント (SELECT ステートメントを除く) の数まで、アプリケーションが Statement.addBatch() メソッドに渡す SQL DML ステートメントを取り込むかどうかを指定します。

captureStatementBatchSQL プロパティーは、captureMode の値が ON の場合にのみ適用されます。

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

ON
pureQuery は、アプリケーションが Statement.addBatch() メソッドに渡す SQL DML ステートメントを取り込みます。これはデフォルト値です。
OFF
pureQuery は、アプリケーションが Statement.addBatch() メソッドに渡す SQL DML ステートメントを取り込みません。
重要: ただし、Statement.addBatch() メソッドに渡される SQL DDL ステートメントは取り込まれます。
executionModeSTATIC であり、 allowDynamicSQLFALSE である場合には、 pureQuery は、アプリケーションが Statement.addBatch() メソッドに渡すすべての SQL ステートメントを静的に実行しようとします。 executionModeSTATIC であり、 allowDynamicSQLTRUE である場合には、 アプリケーションが Statement.addBatch() メソッドに渡すすべての SQL ステートメントは動的に実行されます。

そのため、executionMode を STATIC にしてアプリケーションを実行する場合には、allowDynamicSQL が TRUE である場合にのみ、 captureStatementBatchSQL を OFF に設定してください。 この状態では、それぞれの Statement.addBatch() 呼び出しは動的に実行され、SQL ステートメントが pureQueryXML ファイルにあるかどうかを確認する検査は行われません。

バッチ SQL ステートメントを静的に実行する場合
アプリケーションの実行ごとに同じデータを使用して表をセットアップするバッチ SQL ステートメントを使用したアプリケーションは、 Statement.addBatch() メソッドによって実行されるステートメントに静的 SQL を使用することでメリットを得ることができます。 例えば、アプリケーションで、郵便番号と都市間の対応をセットアップしたり、小売店チェーンの店舗のロケーションを表に追加したりする場合です。

ステートメントを取り込む場合には、captureStatementBatchSQL を ON に設定します。 この設定によって、pureQuery は、最大で maxNonParmSQL で設定された限度まで、Statement.addBatch() メソッドが処理したすべてのステートメントを pureQueryXML ファイルに保存します。

SQL ステートメントをバインドした後にアプリケーションを実行する場合には、 executionMode を STATIC に、そして allowDynamicSQL を FALSE に設定します。 バッチ SQL ステートメントを実行するようにアプリケーションが要求するごとに、 pureQuery は、pureQueryXML ファイルでそのステートメントを検索します。 ステートメントが pureQueryXML ファイル内に存在し、バインドされている場合には、pureQuery はそのステートメントを実行します。 ステートメントが pureQueryXML ファイルに存在しないか、ステートメントがバインドされていない場合には、 allowDynamicSQL が FALSE であるため、pureQuery は例外をスローします。

バッチ SQL ステートメントを動的に実行する場合
異種の SQL ステートメント・バッチで Statement.addBatch() メソッドを使用するアプリケーションは、再び実行することのない SQL ステートメントを何百も実行する可能性があります。 このタイプのアクティビティーは、ユーザー入力を受け取り、ユーザー提供の値の SQL リテラルを使用する INSERT、UPDATE、または DELETE ステートメントを作成するアプリケーションで行われる可能性があります。

異種の SQL ステートメント・バッチは、上述のタイプのアプリケーションで有益であり、 INSERT、UPDATE、DELETE ステートメントの必要な実行順序が損なわれることなく、ネット・ワーク・トラフィックが削減されます。

アプリケーションのステートメントを取り込む場合には、captureStatementBatchSQL を OFF に設定します。 この設定によって、pureQuery は、Statement.addBatch() メソッドが処理するどの SQL ステートメントも取り込まなくなります。 これらのステートメントはいずれも maxNonParmSQL で設定された限度に対してカウントされません。

他の SQL ステートメントをバインドした後にアプリケーションを実行する場合には、 executionMode を STATIC に、そして allowDynamicSQL を TRUE に設定します。 アプリケーションがバッチ SQL ステートメントを実行するように要求すると、 pureQuery は、そのステートメントを pureQueryXML ファイル内で検索せずに動的に実行します。


フィードバック