CREATE TYPE BODYは、CREATE TYPEによって作成された型仕様のメンバーメソッドを定義または実装するために使用されます。
call_specで指定されていないメソッドについては、型本体で対応するメソッド本体を指定する必要があります。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
前提条件
ADTの CREATE TYPE では、各メンバー宣言は CREATE TYPE または CREATE TYPE BODY 定義内に対応するコンストラクタを持たなければなりません。
スキーマ内で型本体を作成または置き換えるには、CREATE TYPE または CREATE ANY TYPE のシステム権限が必要です。他のユーザーのスキーマ内で型を作成するには、CREATE ANY TYPE のシステム権限が必要です。他のユーザーのスキーマ内の型を置き換えるには、DROP ANY TYPE のシステム権限が必要です。
構文
説明
この章には、一部の重要な構文ノードの形式のみが含まれています。
create_type_body_stmtの形式は次のとおりです:
plsql_type_body_sourceの形式は次のとおりです:
plsql_type_body_decl_list_semicolonの形式は次のとおりです:
plsql_type_body_decl_listの形式は次のとおりです:
proc_or_func_def_in_typeの形式は次のとおりです:
セマンティクス
| 構文 | キーワードまたは構文ノード | 説明 |
|---|---|---|
| create_type_body_stmt | OR REPLACE | その型の本体を再作成し(存在する場合)、再コンパイルします。型本体を再定義する前に付与された権限を持つユーザーは、再度権限を取得することなく引き続きその型本体にアクセスできます。この句を使用して、ALTER TYPE ... REPLACE 定義の仕様にメンバー関数の定義を追加できます。 |
| plsql_type_body_source | pl_schema_name | 型本体を含むスキーマ名。デフォルト値はお使いのスキーマです。 |
| plsql_type_body_source | TYPE | ADTの名前。 |
| subprog_decl_in_type | subprog_decl_in_type | 型仕様に関連付けられる機能またはストアドプロシージャの型。型仕様では、各ストアドプロシージャまたは関数ごとに対応するメソッド名とオプションのパラメータリストを定義する必要があります。関数の場合は、返り値の型も指定する必要があります。 |
| proc_or_func_def_in_type | proc_or_func_def_in_type | ストアドプロシージャまたは関数の定義。 |
例
CREATE TYPE demo_typ2 AS OBJECT (
a1 NUMBER,
MEMBER FUNCTION get_square RETURN NUMBER
);
/
CREATE OR REPLACE TYPE BODY demo_typ2 IS
MEMBER FUNCTION get_square RETURN NUMBER IS
BEGIN
RETURN a1;
END;
END;
/