CREATE
PACKAGE
文は、ストアド・パッケージの仕様部を作成するか、または置き換えます。ストアド・パッケージとは、データベースにまとめて格納される関連するプロシージャやファンクションなどのプログラム・オブジェクトをカプセル化したコレクションです。 パッケージ仕様部で、これらのオブジェクトを宣言します。 その後に指定するパッケージ本体で、これらのオブジェクトを定義します。
前提条件
自身のスキーマ内にパッケージを作成するか、または自身のスキーマ内のパッケージを置き換えるには、CREATE
PROCEDURE
システム権限が必要です。 別のユーザーのスキーマ内にパッケージを作成するか、または別のユーザーのスキーマ内のパッケージを置き換えるには、CREATE
ANY
PROCEDURE
システム権限が必要です。
CREATE
PACKAGE
文をデータベースのプリコンパイラ・プログラム内に埋め込むには、キーワードEND-EXEC
の後に特定の言語の埋込みSQL文の終了記号を付けて文を終了する必要があります。
構文
create_package ::=
(invoker_rights_clause ::=、item_list_1 ::=)
キーワードとパラメータの説明
OR
REPLACE
を指定すると、パッケージ仕様部がすでに存在する場合に再作成できます。 この句を使用すると、既存のパッケージに以前に付与されたオブジェクト権限を削除、再作成および再付与しなくても、そのパッケージの仕様部を変更できます。 パッケージ仕様部を変更すると、パッケージ仕様部はデータベースによって再コンパイルされます。
再定義されたパッケージに対する権限を以前に付与されているユーザーは、権限を再付与される必要なく、パッケージにアクセスできます。
ファンクション索引がパッケージに依存している場合は、データベースによって索引にDISABLED
のマークが付けられます。
schema
パッケージを含めるスキーマを指定します。 schema
を省略すると、データベースによってユーザー自身のスキーマにパッケージが作成されます。
item_list_1
パッケージ要素を宣言します。 item_list_1
の項目がプラグマの場合、これは次のいずれかである必要があります。
package_name
データベースに格納されたパッケージを識別します。 ネーミング規則は、「識別子」を参照してください。
メンバー・ファンクションのAUTHID
プロパティおよびオブジェクト型のプロシージャを指定します。 AUTHID
プロパティの詳細は、「実行者権限または定義者権限の使用(AUTHID句)」を参照してください。
CURRENT_USER
を指定すると、CURRENT_USER
の権限でパッケージを実行できます。 この句は実行者権限パッケージを作成します。
また、この句は、問合せ、DML操作および動的SQL文の外部名がCURRENT_USER
のスキーマで解決されるように指定します。 その他すべての文に含まれる外部名は、このパッケージが存在するスキーマで解決されます。
AUTHID DEFINER
DEFINER
を指定すると、パッケージが存在するスキーマの所有者の権限でパッケージを実行し、パッケージが存在するスキーマでその外部名を解決することができます。 これがデフォルトです。これによって、定義者権限パッケージが作成されます。
item_list_1
項目のリストを宣言します。 構文は、「ブロック」を参照してください。
item_list_1
の項目がプラグマの場合、これは次のいずれかである必要があります。
例
パッケージの作成: 例 次の文は、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文」を参照してください。
関連トピック