パッケージとアクセス・プラン

パッケージ は、SQL ステートメントを実行するために使用する制御構造を含むオブジェクトです。

パッケージは、分散プログラムを準備するときに作成されます。 制御構造は、バインドされた形式または操作可能形式の SQL ステートメントと考えることができます。1パッケージ内のすべての制御構造は、単一のソース・プログラム内に組み込まれている SQL ステートメントをもとにして作成されます。

本書では、アクセス・プラン という用語を、 SQL ステートメントを実行するために使用する制御構造を含む パッケージ、プロシージャー、関数、トリガー、およびプログラムや サービス・プログラムなど全般を表すものとして使用しています。 例えば、DROP ステートメントについて、あるオブジェクトをドロップすると、 そのオブジェクトを参照するアクセス・プランすべてが無効になると説明されています (DROPを参照)。 この説明の意味は、ドロップされたオブジェクトを参照している制御構造を含む パッケージ、プロシージャー、関数、トリガー、およびプログラムやサービス・プログラムはすべて無効になるということです。

無効になったアクセス・プラン は、 それに関連した SQL ステートメントが次に実行されたときに、暗黙的にビルドし直されます。 例えば、SELECT INTO ステートメントのアクセス・プラン で 使用されている索引がドロップされた場合、 次にその SELECT INTO ステートメントが実行されるときに、アクセス・プランはビルドし直されます。

パッケージは、Process Extended Dynamic SQL (QSQPRCED) API を使用して作成することもできます。 Process Extended Dynamic SQL (QSQPRCED) API を使用して作成したパッケージは、Process Extended Dynamic SQL (QSQPRCED) API によってのみ使用することができます。 このようなパッケージは、DRDA® プロトコルを使用してアプリケーション・サーバーで使用することはできません。詳しくは、IBM® i Information Centerプログラミング・カテゴリーの中で、データベースおよびファイル API に関する情報を参照してください。

QSQPRCED API は IBM i Access for Windowsで使用され、SQL ODBC、JDBC、SQLJ、OLD DB、および .NET インターフェースを介して実行される SQL ステートメントをキャッシュに入れるためのパッケージを作成します。

1 非分散 SQL プログラム、非分散サービス・プログラム、SQL 関数、および SQL プロシージャーの場合は、SQL ステートメントを実行するために使用される制御構造は、オブジェクトに関連したスペースに保管されます。