アプリケーション開発の手引き

DB2 コール・レベル・インターフェース (CLI)

組み込み SQL インターフェースを使用するアプリケーションには、 SQL ステートメントをコードに変換するプリコンパイラーが必要で、変換後そのコードはコンパイルされ、データベースにバインドされ、実行されます。対照的に、DB2 CLI アプリケーションは、プリコンパイルまたはバインドする必要がなく、代わりに関数の標準セットを使用して実行時に SQL ステートメントおよび関連サービスを実行します。

この違いは重要です。というのはこれまでプリコンパイラーは、個々のデータベース製品に特定のものであったからです。これは効果的にユーザーのアプリケーションをその製品に結び付けるものでした。 DB2 CLI を使用すると、どの特定のデータベース製品からも独立した可搬性のあるアプリケーションを作成することが可能になります。この独立性によって、 DB2 CLI アプリケーションはさまざまな DB2 データベース (DRDA データベースを含む) にアクセスするために再コンパイルまたは再バインドする必要がなく、ただ該当するデータベースに実行時に接続するだけで済むようになります。

組み込み SQL と DB2 CLI との比較

DB2 CLI と組み込み SQL は、次のような点でも異なります。

上記の違いは別にして、組み込み SQL と DB2 CLI には次の重要な共通の概念があります。 DB2 CLI は組み込み SQL で動的に作成できる SQL ステートメントを実行することができます。
注:さらに、DB2 CLI は複合 SQL ステートメントのような、動的に準備できない一部の SQL ステートメントも受け入れることができます。

表 37 に各 SQL ステートメントをリストし、 DB2 CLI を使用して実行できるかどうかを示してあります。また、表には、コマンド行プロセッサーを使用してステートメントを対話式で実行できるかどうかも示してあります (これは SQL ステートメントをプロトタイピングするのに便利です)。

各 DBMS には動的に作成できるステートメントがさらにある場合もありますが、この場合には DB2 CLI がステートメントを DBMS に渡します。 1 つの例外があります。一部の DBMS では COMMIT および ROLLBACK ステートメントを動的に準備できますが渡されることはありません。その代わりに SQLEndTran() 関数を使用して、 COMMIT または ROLLBACK ステートメントのいずれかを指定する必要があります。

DB2 CLI を使用する場合の利点

DB2 CLI インターフェースには、組み込み SQL よりも優れている点がいくつかあります。

組み込み SQL か DB2 CLI かの決定

どのインターフェースを選択するかは、使用するアプリケーションによって決まります。

DB2 CLI は、移植性が要求される、照会ベースのグラフィカル・ユーザー・インターフェース (GUI) アプリケーションに理想的です。前述の利点のため、 DB2 CLI の方が明らかにどんなアプリケーションにもふさわしいように見えるかもしれません。しかし、考慮しなければならない要素が 1 つあります。静的 SQL と動的 SQL の比較です。組み込みアプリケーションでは静的 SQL を使用する方がはるかに簡単です。

CLI アプリケーションでの静的 SQL の使用法については、 http://www.ibm.com/software/data/db2/udb/staticcli にある Web ページをご覧ください。

静的 SQL には、次のようないくつかの利点があります。

アプリケーションで両方のインターフェースの利点が必要な場合は、静的 SQL を含むストアード・プロシージャーを作成して、 DB2 CLI アプリケーションで静的 SQL を利用できます。ストアード・プロシージャーは、DB2 CLI アプリケーション内から呼び出され、サーバーで実行されます。ストアード・プロシージャーを作成すると、どの DB2 CLI または ODBC アプリケーションでもこれを呼び出すことができます。詳細については、コール・レベル・インターフェースの手引きおよび解説書 を参照してください。

CLI アプリケーションでの静的 SQL の使用法については、 http://www.ibm.com/software/data/db2/udb/staticcli にある Web ページをご覧ください。

DB2 CLI と組み込み SQL の両方を使う混合アプリケーションを作成して、それぞれの利点を活用することもできます。この場合、DB2 CLI を使用して基本のアプリケーションを作成し、パフォーマンスまたは機密保護上の理由のために静的 SQL を使用してキー・モジュールを作成します。このためアプリケーション設計が複雑になるので、ストアード・プロシージャーがアプリケーション要件に合わない場合に限りこの方法を使用してください。詳細については、 コール・レベル・インターフェースの手引きおよび解説書 の『組み込み SQL と DB2 CLI の混合』を参照してください。

結局、それぞれのインターフェースをいつ使用するかの判断は、 1 つの要因によるというのではなく、個々の必要性と以前の経験によって決まります。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]