CREATE PACKAGE
目的
パッケージはPL/SQLを使用して定義されます。このため、この項では一般的な情報について説明します。構文およびセマンティクスの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。
CREATE
PACKAGE
文を使用すると、ストアド・パッケージの仕様部を作成できます。パッケージとは、関連するプロシージャ、ファンクション、およびデータベース上にまとめて格納されるその他のプログラム・オブジェクトの集合のことです。パッケージ仕様部でこれらのオブジェクトを宣言します。後で指定するパッケージ本体では、これらのオブジェクトを定義します。
関連項目:
-
パッケージ実装の指定については、「CREATE PACKAGE BODY」を参照してください。
-
スタンドアロン・ファンクションおよびプロシージャの作成については、「CREATE FUNCTION」および「CREATE PROCEDURE」を参照してください。
-
パッケージの変更および削除については、「ALTER PACKAGE」および「DROP PACKAGE」を参照してください。
-
パッケージの説明と使用方法の詳細は、『Oracle Database開発ガイド』と『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
前提条件
自分のスキーマ内にパッケージを作成または再作成する場合は、CREATE
PROCEDURE
システム権限が必要です。他のユーザーのスキーマ内にパッケージを作成または再作成する場合は、CREATE
ANY
PROCEDURE
システム権限が必要です。
Oracle Databaseのプリコンパイラ・プログラム内にCREATE
PACKAGE
文を埋め込む場合、キーワードEND-EXEC
に続けて、各言語の埋込みSQL文の終了記号を記述して文を終了する必要があります。
関連項目:
詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。
構文
パッケージはPL/SQLを使用して定義されます。このため、このマニュアルの構文図ではSQLキーワードのみを示します。PL/SQLの構文、セマンティクスおよび例については、『Oracle Database PL/SQL言語リファレンス』を参照してください。
create_package::=
(plsql_package_source
: 『Oracle Database PL/SQL言語リファレンス』を参照。)
セマンティクス
OR REPLACE
OR
REPLACE
を指定すると、既存のパッケージ仕様部を再作成できます。この句を指定した場合、パッケージに対して付与されていたオブジェクト権限を削除、再作成および再付与しなくても、既存のパッケージの仕様部を変更できます。パッケージ仕様部を変更した場合、その仕様部は自動的に再コンパイルされます。
再定義したパッケージに対して権限が付与されていたユーザーは、権限が再付与されなくてもそのパッケージにアクセスできます。
ファンクション索引がパッケージに依存している場合、索引にDISABLED
のマークが付きます。
関連項目:
パッケージ仕様部の再コンパイルについては、「ALTER
PACKAGE
」を参照してください。
IF NOT EXISTS
IF NOT EXISTS
を指定すると、次の効果が得られます。
-
パッケージが存在していない場合は、文の最後に新しいパッケージが作成されます。
-
パッケージが存在している場合、これは文の最後の時点にあるパッケージになります。古いものが検出されるため、新しいものは作成されません。
単一の文には、一度に1つのOR REPLACE
またはIF NOT EXISTS
を指定できます。同じ文でOR REPLACE
とIF NOT EXISTS
の両方を使用すると、ORA-11541: REPLACE and IF NOT EXISTS cannot coexist in the same DDL statement
というエラーが発生します。
IF EXISTS
はCREATE
とともに使用すると、ORA-11543: Incorrect IF NOT EXISTS clause for CREATE statement
が発生します。
[ EDITIONABLE | NONEDITIONABLE ]
この句を使用すると、schema
のスキーマ・オブジェクト・タイプPACKAGE
のエディショニングが有効化されたときに、そのパッケージをエディション・オブジェクトにするか非エディション・オブジェクトにするかを指定できます。デフォルトは、EDITIONABLE
です。エディション・オブジェクトと非エディション・オブジェクトの詳細は、『Oracle Database開発ガイド』を参照してください。
plsql_package_source
plsql_package_source
の構文、セマンティクスおよび例については、『Oracle Database PL/SQL言語リファレンス』を参照してください。