組み込み SQL の概要

組み込み SQL アプリケーションは、データベースに接続し、組み込み SQL ステートメントを実行します。 組み込み SQL ステートメントは、ターゲット・データベース・サーバーにバインドする必要がある 1 つのパッケージに入っています。

データベース Db2® 向けの組み込みSQLアプリケーションは、以下のホストプログラミング言語で開発できます:C、C++、および COBOL。

組み込み SQL アプリケーションのビルドでは、アプリケーションのコンパイルおよびリンクの前に、前提条件となる 2 つのステップがあります。
  • Db2 プリコンパイラーを使用した、組み込み SQL ステートメントを含むソース・ファイルの準備。

    PREP (PRECOMPILE) コマンドを使用して Db2 プリコンパイラーを起動します。 Db2 プリコンパイラーはソース・コードを読み取り、組み込み SQL ステートメントを解析して Db2 実行時サービス API 呼び出しに変換し、最後に出力を新たな変更されたソース・ファイルに書き出します。 プリコンパイラーは、SQL ステートメントに対するアクセス・プランを生成し、 それらは共にパッケージとしてデータベース内に保管されます。

  • アプリケーション内のステートメントのターゲット・データベースへのバインド。

    バインディングはプリコンパイル時 (PREP コマンド) にデフォルトで行われます。 バインディングを延期する (例えば、BIND コマンドを後で実行する) 場合、 バインド・ファイルが生成されるようにするため、BINDFILE オプションを PREP の実行時に指定する必要があります。

組み込み SQL アプリケーションをプリコンパイルしてバインドすると、ホスト言語固有の開発ツールを使用してコンパイルおよびリンクができるようになります。

組み込みSQLアプリケーションの開発を支援するために、 C言語の組み込みSQLテンプレートを参照することができます。 組み込み SQL サンプル・アプリケーションの使用例は、 %DB2PATH%\SQLLIB\samples ディレクトリーにもあります。
注: %DB2PATH% は Db2 インストール・ディレクトリーを指します。

静的 SQL と動的 SQL

SQL ステートメントは、2 つの方法、つまり静的または動的な方法のいずれかで実行できます。

静的に実行される SQL ステートメント
静的に実行される SQL ステートメントの場合、構文はプリコンパイル時に完全に分かっています。 SQL ステートメントの構造は、静的と考えられるステートメントとして完全に指定されていなければなりません。 例えば、ステートメントで参照される列または表の名前は、 プリコンパイル時に完全に認識されている必要があります。 実行時に指定できる唯一の情報は、ステートメントが参照するホスト変数の値だけです。 ただし、データ・タイプなどのホスト変数情報は、プリコンパイルしなければなりません。 静的に実行される SQL ステートメントのプリコンパイル、バインド、およびコンパイルは、アプリケーションを実行する前に行います。 静的 SQL は、統計が大幅に変更されないデータベースで使用するのに最適です。
動的に実行される SQL ステートメント
動的に実行される SQL ステートメントは、アプリケーションによって実行時にビルドおよび実行されます。 エンド・ユーザーに対してプロンプトを出し、検索する表および列の名前など、SQL ステートメントの重要な部分の入力を求める対話式アプリケーションが、動的 SQL に適した状況の良い例です。