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