プログラムパッケージ(略称:パッケージ)は、ストアドプロシージャ、関数、変数、定数、カーソルなどのPL要素で構成されます。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
プログラムパッケージは、オブジェクト指向プログラミング言語の特徴を備えており、これらのPLプログラミング要素をカプセル化したものです。パッケージはC++やJava言語のクラスに似ており、変数はクラス内のメンバ変数に相当し、ストアドプロシージャと関数はクラスメソッドに相当します。関連するモジュールをパッケージとして分類することで、開発者はオブジェクト指向の手法を用いてストアドプロシージャを開発でき、管理や理解が容易になります。
クラスと同様に、パッケージ内のプログラム要素も公開要素と非公開要素の2種類に分かれます。これら2種類の要素の違いは、アクセス可能なプログラムの範囲、すなわちスコープが異なることです。公開要素はパッケージ内の関数やストアドプロシージャから呼び出すことができるだけでなく、パッケージ外部のPLプログラムからもアクセス可能ですが、非公開要素はパッケージ内の関数やプログラムからしかアクセスできません。
パッケージはストアドサブルーチンを管理でき、主な利点は以下の通りです:
パッケージはアプリケーションから実行の詳細を隠すことができ、クライアントプログラムから実行の詳細を隠すことは広く受け入れられているベストプラクティスです。多くのユーザーがこの規範を厳格に守り、アプリケーションがデータベースへの読み書きを行う際には、パッケージが提供するサブルーチンインターフェースを通じてのみ行うようにしています。また、データベースの読み取りには
SELECTクエリ文を許可するユーザーもいますが、データベースの変更は必ずパッケージのサブルーチンを通じて行わなければなりません。そのため、業務処理ロジックをパッケージのサブルーチンにカプセル化することで、後の変更も非常に便利になります。パッケージのサブルーチン呼び出しでは、パッケージ名を指定する必要があります。これにより、後のデータベースバージョンのキーワードとサブルーチン名が競合し、アプリケーションコードにエラーが発生する心配がなくなります。