構造化照会言語 (SQL)

構造化照会言語 (SQL) は、リレーショナル・データベース内のデータを定義および操作するための標準化言語です。データの関係モデルの概念にしたがうと、データベースは表の集合であると考えられます。また、表内の値によって関連が表現されるとともに、1 つ以上の基本表から得られる結果表を指定することによってデータが検索されます。

SQL ステートメントは、データベース・マネージャーによって実行されます。データベース・マネージャーには、結果表の指定を、データ検索を最適化する一連の内部命令に変換する機能があります。SQL ステートメントを準備 するときに、この変換が行われます。この変換を行うことを、バインドする とも言います。

SQL ステートメントを実行するには、あらかじめ実行可能 SQL ステートメントがすべて準備されている必要があります。準備の結果は、ステートメントの実行可能形式、つまり実行形式 です。 SQL は、SQL ステートメントを準備する方式とステートメントの実行形式の持続期間によって、静的 SQL と動的 SQL に区別されます。

静的 SQL

静的 SQL ステートメントのソース (原始) 形式は、ホスト言語 (COBOL、C、または Java™ など) で書かれたアプリケーション・プログラム内部に組み込まれます。 このステートメントは、アプリケーション・プログラムの実行前に準備されます。また、このステートメントの実行形式は、アプリケーション・プログラムが実行された後も残ります。

静的 SQL ステートメントが入っているソース (原始) プログラムは、コンパイルする前に、SQL プリコンパイラーで処理する必要があります。プリコンパイラーは、SQL ステートメントの構文をチェックしてホスト言語のコメントに変換し、さらにデータベース・マネージャーを呼び出すホスト言語のステートメントを生成します。

SQL アプリケーション・プログラムの準備には、プリコンパイル、 その静的 SQL ステートメントの準備、 および変更されたソース・プログラムのコンパイルが含まれます。

動的 SQL

組み込み動的 SQL ステートメントを含むプログラムは、 静的 SQL を含むプログラムの場合と同じように、しかし静的 SQL とは異なり、 プリコンパイルを行う必要があり、 動的 SQL ステートメントは実行時に構成および準備されます。 動的 SQL ステートメントのソース形式は、 静的 SQL ステートメントの PREPARE または EXECUTE IMMEDIATE を使用して、 プログラムからデータベース・マネージャーに文字ストリングまたはグラフィック・ストリングとして渡されます。 PREPARE ステートメントを使用して準備されたステートメントは、DECLARE CURSOR、DESCRIBE、または EXECUTE のいずれかのステートメント内で参照できます。このステートメントの実行形式は、接続が継続している間、または 最後の SQL プログラムが呼び出しスタックから出るまで存続します。

REXX アプリケーションに組み込まれた SQL ステートメントは動的 SQL です。 対話式 SQL 機能または呼び出しレベル・インターフェース (CLI) にサブミット される SQL ステートメントも、動的 SQL ステートメントであるといえます。

拡張動的 SQL

拡張動的 SQL ステートメントは、完全に静的でもなく、完全に動的でもありません。 QSQPRCED API は、拡張動的 SQL 機能を提供します。 動的 SQL 機能と同様に、この API を使用して、ステートメントを準備し、記述し、実行することができます。 動的 SQL とは異なり、この API によってパッケージ中に準備された SQL ステートメントは、 そのパッケージまたはステートメントが明示的に削除されるまで、存続します。 詳しくは、IBM® i Information Centerプログラミング・カテゴリーの中で、データベースおよびファイル API に関する情報を参照してください。

対話式 SQL

対話式 SQL 機能は、すべてのデータベース・マネージャーに関連付けられています。 あらゆる対話式 SQL 機能は、本質的には、ワークステーションからステートメントを読み取り、 ステートメントを動的に準備して実行し、 その結果をユーザーに表示する SQL アプリケーション・プログラムです。 このような SQL ステートメントは、対話式に 出されるステートメントと呼ばれます。

DB2® for i の対話式機能は、STRSQL コマンド、STRQM コマンド、または System i® ナビゲーターの SQL スクリプト実行サポートによって呼び出されます。 SQL の対話式機能の詳細については、「SQL プログラミング」および「Query Manager ご使用の手引き」PDF へのリンク を参照してください。

SQL コール・レベル・インターフェースおよび Open Database Connectivity

DB2 コール・レベル・インターフェース (CLI) は、動的 SQL ステートメントを処理するための関数をアプリケーション・プログラムに提供するアプリケーション・プログラミング・インターフェースです。DB2 CLI により、ユーザーはどの ILE 言語を使用して いる場合でも、DB2 for i が提供するサービス・プログラムへのプロ シージャー呼び出しを使用して、SQL 機能に直接アクセスできます。CLI プログラムは、Microsoft や他のベンダーから入手 できる、ODBC データ・ソースへのアクセスを可能にする Open Database Connectivity (ODBC) ソフトウェア開発キットを使用して コンパイルすることもできます。組み込み SQL とは異なり、プリコンパイルの必要はありません。このインターフェースを使用して開発されたアプリケーションは、個 々のデータベースごとにコンパイルせずに、さまざまなデータベース に対して実行できます。インターフェースを通して、アプリケーションは実行時にプロシージャーを 呼び出し、データベースに接続し、SQL ステートメントを実行し、戻された データや状況に関する情報を入手します。

DB2 CLI インターフェースは、組み込み SQL では利用不能な多くの機能 を備えています。例えば次のようなものがあります。

  • CLI が提供する関数呼び出しは、DB2 データベース管理システム・ファミリー に共通の、一貫した方法でのデータベース・システム・カタログ情 報の照会、取り出しをサポートしています。 これにより、アプリケーション・サーバー特定のカタログ照会を作成する必要性が減ります。
  • CLI を使用して作成されたアプリケーション・プログラムから呼び出されたス トアード・プロシージャーは、これらのプログラムに対して結果セットを戻 すことができます。

使用できる機能とその構文の詳細については、「DB2 UDB for iSeries SQL 呼び出しレベル・インターフェース (ODBC)」を参照してください。

Java DataBase Connectivity (JDBC) および組み込み SQL for Java (SQLJ) プログラム

DB2 for i は、標準に準拠した 2 つの Java プログラミング API、つまり、Java Database Connectivity (JDBC) と embedded SQL for Java (SQLJ) をインプリメントしています。どちらも、DB2 にアクセスする Java アプリケーションやアプレットを作成できます。

JDBC 呼び出しは、Java 固有の方式によって、DB2 CLI への呼び出し に変換されます。DB2 for i データベースには、2 つの JDBC ドライバーを介してアクセスできます 。IBM Developer Kit for Java ドライバーまたは IBM Toolbox for Java JDBC ドライバーです。IBM Toolbox for Java JDBC ドライバーについての詳しい情報 は、「IBM Toolbox for Java」を参照してください。

JDBC では、静的 SQL は使用できません。SQLJ アプリケーションは、データベースへの接続や SQL エラーの 処理などの作業の基礎として JDBC を使用しますが、SQLJ ソ ース・ファイルに 静的 SQL ステートメントを含めることもできます。SQLJ ソース・ファイルは、まず SQLJ 変換プログラムを使って 変換しないと、得られた Java ソース・コードをコンパイルでき ません。

JDBC および SQLJ アプリケーションの詳細については、「Developer Kit for Java」を参照してください。

OLE DB and ADO (ActiveX Data Object)

IBM i Access for Windows には、Windows クライアント PC からの DB2 クライアント/サーバー・アプリケーション開発を迅速かつ容易にするものとして、Programmer's Toolkit とともに OLE DB Provider が組み込まれています。 詳しくは、IBM i Information Center の中のIBM i Access for Windows OLE DB Provider の説明を参照してください。

.NET

IBM i Access for Windows には、Windows クライアント PC からの Windows クライアント/サーバー・アプリケーション開発を迅速かつ容易にするものとして、.NET Provider が組み込まれています。 詳しくは、IBM i Information Center の中の IBM i Access for Windows .NET Provider の説明を参照してください。