パッケージ仕様は、パッケージ (API) のユーザーインターフェイスを定義します。 仕様には、パッケージのユーザーに公開される関数、プロシージャ、タイプ、例外、およびカーソルが含まれています。
次の構文は、パッケージのインターフェイスを定義するために使用されます。
CREATE [ OR REPLACE ] PACKAGE package_name
[authorization_clause]
{ IS | AS }
[ declaration; ] ...
[ procedure_or_function_declaration; ] ...
[ package_name ] ;
ここでは:
authorization_clause :=
{ AUTHID DEFINER } | { AUTHID CURRENT_USER }
ここでは:
procedure_or_function_declaration :=
procedure_declaration | function_declaration
ここでは:
procedure_declaration :=
PROCEDURE proc_name[ argument_list ] [restriction_pragma];
ここでは:
function_declaration :=
FUNCTION func_name [ argument_list ]
RETURN rettype [ restriction_pragma ];
ここでは:
argument_list :=
( argument_declaration [, ...] )
ここでは:
argument_declaration :=
argname [ IN | IN OUT | OUT ] argtype [ DEFAULT value ]
ここでは:
restriction_pragma :=
PRAGMA RESTRICT_REFERENCES(name, restrictions)
ここでは:
restrictions :=
restriction [, ... ]
パラメーター
パラメーター | 説明 |
---|---|
package_name | パッケージに割り当てられた識別子。 各パッケージには、スキーマ内で一意の名前を持つ必要があります。 |
AUTHID DEFINER | AUTHID 句を省略するか、または AUTHID DEFINER パラメーターを指定した場合、パッケージ所有者の許可を使用して、データベースオブジェクトへのアクセス権限が決定されます。 |
AUTHID CURRENT_USER | AUTHID CURRENT_USER パラメーターを指定すると、パッケージ内のプログラムを実行する現在のユーザーの権限を使用して、アクセス権限が決定されます。 |
declaration | パブリック変数の識別子。 パブリック変数は、package_name.variable 構文を使用してパッケージの外部からアクセスできます。 ゼロ、1、またはそれ以上のパブリック変数を指定できます。
プロシージャまたは関数を宣言する前に、パブリック変数を定義する必要があります。
有効値:
|
proc_name | パブリックプロシージャの名前。 |
argname | 引数の名前。 引数は、関数またはプロシージャ本体内でこの名前で参照されます。 |
IN | IN OUT | OUT | 引数モード。 IN:引数は入力にのみ使用されます。 この値がデフォルトです。 IN OUT:引数は、値を受け取り、値を返すために使用されます。 OUT:引数は出力にのみ使用されます。 |
argtype | 引数のデータタイプ。 引数のタイプは、基本データタイプ、%TYPE を使用する既存の列のタイプのコピー、または入れ子になったテーブルやオブジェクトタイプなどのユーザー定義タイプにすることができます。
基本データ型に長さを指定することはできません。 たとえば、データタイプとして VARCHAR2(10) ではなく VARCHAR2 を指定する必要があります。
tablename.columnname%TYPE を記述して、列のタイプを参照できます。 これにより、プロシージャをテーブル定義の変更に依存しないようにできます。 |
DEFAULT value | プロシージャを呼び出すときに入力引数が指定されていない場合、DEFAULT 句は入力引数のデフォルト値を提供します。 IN OUT または OUT モードの引数に DEFAULT を指定することはできません。 |
func_name | パブリック関数の名前。 |
rettype | 返されるデータタイプ。 |
DETERMINISTIC | DETERMINISTIC は IMMUTABLE の同義語です。 DETERMINISTIC 関数を使用してデータベースを変更することはできません。同じ引数の値を入力すると、DETERMINISTIC 関数は常に同じ結果を返します。 この関数はデータベースのクエリには使用されず、引数リストにない情報は使用しません。 この句を含めると、すべて定数の引数を持つ関数の呼び出しをすべて関数値で置き換えることができます。 |
restriction | 以下のキーワードは互換性のためにサポートされています。無視しても構いません。
|