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の名前。 |
| subprogDeclInType | subprogDeclInType | 型仕様に関連付けられた機能またはストアドプロシージャの型です。型仕様内で各ストアドプロシージャまたは関数に対応するメソッド名とオプションのパラメータリストを定義する必要があります。関数の場合は、戻り値の型も指定する必要があります。 |
| procOrFuncDefInType | procOrFuncDefInType | ストアドプロシージャまたは関数の定義。 |
例
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;
/