CREATE
PACKAGE
文は、データベースに1つの単位として格納される、関連するプロシージャやファンクション、その他のプログラム・オブジェクトをカプセル化したコレクションである、ストアド・パッケージの仕様部を作成するか、または置き換えます。パッケージ仕様部では、これらのオブジェクトを宣言します。その後に指定するパッケージ本体で、これらのオブジェクトを定義します。
ここでのトピック
前提条件
自分のスキーマ内にパッケージを作成するか、または自分のスキーマ内のパッケージを置き換えるには、CREATE
PROCEDURE
システム権限が必要です。別のユーザーのスキーマ内にパッケージを作成するか、または別のユーザーのスキーマ内のパッケージを置き換えるには、CREATE
ANY
PROCEDURE
システム権限が必要です。
CREATE
PACKAGE
文をデータベースのプリコンパイラ・プログラム内に埋め込むには、キーワードEND-EXEC
の後に特定の言語の埋込みSQL文の終了記号を付けて文を終了する必要があります。
構文
create_package ::=
plsql_package_source ::=
参照:
invoker_rights_clause ::=
セマンティクス
OR REPLACE
パッケージが存在する場合は、パッケージを再作成し、再コンパイルします。
再定義する前のパッケージに対する権限を付与されていたユーザーは、権限を再付与される必要なく、パッケージにアクセスできます。
ファンクション索引がパッケージに依存している場合は、データベースによって索引にDISABLED
のマークが付けられます。
[ EDITIONABLE | NONEDITIONABLE ]
schema
でスキーマ・オブジェクト・タイプPACKAGE
に対してエディションが有効になっている場合に、パッケージがエディション・オブジェクトまたは非エディション・オブジェクトのどちらになるかを指定します。デフォルト: EDITIONABLE
。エディション・オブジェクトと非エディション・オブジェクトの詳細は、『Oracle Database開発ガイド』を参照してください。
schema
パッケージが含まれているスキーマの名前。デフォルト: 自分のスキーマ。
package_name
データベースに格納されたパッケージを識別します。ネーミング規則については、「Identifiers」を参照してください。
invoker_rights_clause
パッケージのファンクションとパッケージおよびパッケージ仕様部で宣言された明示カーソルのAUTHID
プロパティを指定します。AUTHID
プロパティの詳細は、「実行者権限および定義者権限(AUTHIDプロパティ)」を参照してください。
accessible_by_clause
パッケージに対する動作は、ファンクションに対する動作と同様です。CREATE
FUNCTION
の「accessible_by_clause」を参照してください。
item_list_1
パッケージ内のすべてのタイプを定義し、パッケージ内のすべてのカーソルとサブプログラムを宣言します。すべての宣言には、対応する定義がパッケージ本体で必要です。対応する宣言と定義のヘッダーは、空白以外の一語一語が一致している必要があります。
item_list_1の制限
PRAGMA
AUTONOMOUS_TRANSACTION
は、ここには記述できません。
例
例14-16 emp_mgmtパッケージの仕様部の作成
この文は、emp_mgmt
パッケージの仕様を作成します。
CREATE OR REPLACE PACKAGE emp_mgmt AS FUNCTION hire (last_name VARCHAR2, job_id VARCHAR2, manager_id NUMBER, salary NUMBER, commission_pct NUMBER, department_id NUMBER) RETURN NUMBER; FUNCTION create_dept(department_id NUMBER, location_id NUMBER) RETURN NUMBER; PROCEDURE remove_emp(employee_id NUMBER); PROCEDURE remove_dept(department_id NUMBER); PROCEDURE increase_sal(employee_id NUMBER, salary_incr NUMBER); PROCEDURE increase_comm(employee_id NUMBER, comm_incr NUMBER); no_comm EXCEPTION; no_sal EXCEPTION; END emp_mgmt; /
emp_mgmt
パッケージの仕様部では、次のようなパブリック・プログラム・オブジェクトを宣言します。
ファンクションhire
およびcreate_dept
プロシージャremove_emp
、remove_dept
、increase_sal
およびincrease_comm
例外no_comm
およびno_sal
パッケージにアクセスできるユーザーは、これらすべてのオブジェクトを使用できます。パッケージの作成後、これらのパブリック・プロシージャまたはパブリック・ファンクションのいずれかを起動したり、パッケージの任意のパブリック例外を呼び出すアプリケーションを開発できます。
このパッケージのプロシージャおよびファンクションを起動するには、これらのプロシージャおよびファンクションをパッケージ本体で定義しておく必要があります。emp_mgmt
パッケージの本体を作成するCREATE
PACKAGE
BODY
文の例は、「CREATE PACKAGE BODY文」を参照してください。