SQL ステートメントの準備と実行

ステートメント・ハンドルを割り振った後、SQL ステートメント を指定し、実行することができます。

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