SQL ステートメントの準備と実行
ステートメント・ハンドルを割り振った後、SQL ステートメント を指定し、実行することができます。
以下のステップを通して、SQL ステートメントを実行できます。
- 準備をしてから実行します。
- 引数として SQL ステートメントを用いた
SQLPrepare()を呼び出す。 - SQLステートメントにパラメータマーカー が含まれている場合は、
SQLBindParameter()までご連絡ください。 SQLExecute()を呼び出す。
- 引数として SQL ステートメントを用いた
- 直接に実行します。
- SQLステートメントにパラメータマーカー が含まれている場合は、
SQLBindParameter()までご連絡ください。 - 引数として SQL ステートメントを用いた
SQLExecDirect()を呼び出す。
- SQLステートメントにパラメータマーカー が含まれている場合は、
最初の方法 (準備と実行) では、ステートメントの準備と実行を分割します。 次のいずれかの条件が当てはまる場合は、この方法を使用してください。
- ステートメントを繰り返し実行する場合 (通常は、別のパラメーター値を用いて)。 この方法では、同じステートメントは一度準備するだけです。 このステートメントを後で 実行する場合は、準備で生成されたアクセス・プランを利用します。
- ステートメントを実行する前に、結果セットの列に関する情報が必要な場合。
2 番目の方法は、準備ステップと実行ステップを 1 つに結合しています。 次の両方の条件が当てはまる場合は、この方法を使用してください。
- ステートメントを一度だけ実行する場合。 この方法では、SQL ステートメントを実行する 際に、2 つではなく 1 つの関数を呼び出します。
- ステートメントを実際に実行する前に、結果セットの列に関する情報を必要としない場合。
Db2 for z/OS® Db2 for Linux®, UNIX, and Windows は、データベースサーバーで動的なステートメントのキャッシュを提供します。 Db2 ODBC 用語では、動的ステートメント・キャッシュとは、特定のステートメント・ハンドルに対して一度データベースがステートメントを準備すると、ステートメント・ハンドルを解放しない限り (コミットまたはロールバックの後でも) 再度準備する必要がなくなることを意味します。 複数のトランザクションにわたって同一の SQL ステートメントを繰り返し
実行するアプリケーションの場合、以下のようにすれば、処理時間と
ネットワーク・トラフィックをかなり節約できます。
- そのような各ステートメントをそれ自体のステートメント・ハンドルに関連付ける。
- アプリケーションの先頭でそのステートメントを一度準備する。
- その後、アプリケーション全体で必要な回数だけそのステートメントを実行する。