パッケージ仕様を作成します。
構文
CREATE [ OR REPLACE ] PACKAGE name
[ AUTHID { DEFINER | CURRENT_USER } ]
{ IS | AS }
[ declaration; ] [, ...]
[ { PROCEDURE proc_name
[ (argname [ IN | IN OUT | OUT ] argtype [ DEFAULT value ]
[, ...] ];
[ PRAGMA RESTRICT_REFERENCES(name,
{ RNDS | RNPS | TRUST | WNDS | WNPS } [, ... ] ); ]
|
FUNCTION func_name
[ (argname [ IN | IN OUT | OUT ] argtype [ DEFAULT value ]
[, ...] ]
RETURN rettype [ DETERMINISTIC ];
[ PRAGMA RESTRICT_REFERENCES(name,
{ RNDS | RNPS | TRUST | WNDS | WNPS } [, ... ] ); ]
}
) [, ...]
END [ name ]
説明
CREATE PACKAGE は、パッケージ仕様を作成します。 CREATE OR REPLACE TRIGGER は、新しいパッケージ仕様を作成するか、既存の仕様を置き換えます。
スキーマ名を指定すると、指定したスキーマにパッケージが作成されます。 指定しないとパッケージは現在のスキーマに作成されます。 同じスキーマ内の既存のパッケージと同じ名前は、新しいパッケージの名前として使用できません。 CREATE OR REPLACE PACKAGE コマンドを使用して、既存のパッケージの定義を更新することができます。
ストアドプロシージャを作成するユーザーは、パッケージの所有者です。
パラメーター
パラメーター | 説明 |
---|---|
name | 作成するパッケージの名前。 名前はスキーマで修飾可能です。 |
DEFINER | CURRENT_USER | パッケージで参照されるデータベースオブジェクトへのアクセスを許可するかどうかを決定する特権。 DEFINER は、パッケージ所有者の特権を示します。 CURRENT_USER は、パッケージ内のプログラムを実行している現在のユーザーの特権を示します。 デフォルト値は DEFINER です。 |
declaration | パブリック変数、タイプ、カーソル、または REF CURSOR 宣言。 |
proc_name | パブリックストアドプロシージャの名前。 |
argname | 引数の名前。 |
IN | IN OUT | OUT | 引数モード。 |
argtype | プログラム引数のデータタイプ。 |
DEFAULT value | 入力引数のデフォルト値。 |
func_name | パブリック関数の名前。 |
rettype | 戻り値のデータ型。 |
DETERMINISTIC | DETERMINISTIC は、IMMUTABLE の同義語です。 DETERMINISTIC ストアドプロシージャでは、データベースは変更できません。また、同じ引数値が指定されている場合は常に同じ結果を返します。 ストアドプロシージャがデータベースの検索をしたり、または引数リストから除外されている情報を使用したりすることはありません。 この句が含まれている場合、すべての定数引数を使用したストアドプロシージャを呼び出すと、直ちにストアドプロシージャの値に置き換えられます。 |
RNDS | RNPS | TRUST | WNDS | WNPS | キーワードは互換性のために受け入れられ、無視されます。 |
例
パッケージ仕様 (empinfo) には、パブリックコンポーネントとして、パブリック変数、パブリックストアドプロシージャ、パブリック関数の 3 つが含まれます。
CREATE OR REPLACE PACKAGE empinfo
IS
emp_name VARCHAR2(10);
PROCEDURE get_name (
p_empno NUMBER
);
FUNCTION display_counter
RETURN INTEGER;
END;