CREATE TYPE BODY
目的
型本体はPL/SQLを使用して定義されます。このため、この項では一般的な情報について説明します。構文およびセマンティクスの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。
CREATE
TYPE
BODY
を使用すると、オブジェクト型仕様部で定義されたメンバー・メソッドを定義または実装することができます。CREATE
TYPE
文およびCREATE
TYPE
BODY
文を使用してオブジェクト型を作成します。CREATE
TYPE
文では、オブジェクト型の名前、オブジェクトの属性、メソッドおよびその他のプロパティを指定します。CREATE
TYPE
BODY
文には、その型を実装するメソッドに対するコードが含まれます。
call_spec
を定義していないオブジェクト型仕様部に指定された各メソッドには、オブジェクト型本体の対応するメソッド本体を指定する必要があります。
ノート:
SQLJオブジェクト型を作成する場合は、Javaクラスとして指定されます。
関連項目:
-
型仕様部の作成の詳細は、「CREATE TYPE」を参照してください。
-
型仕様部の変更の詳細は、「ALTER TYPE」を参照してください。
前提条件
オブジェクト型用のCREATE
TYPE
仕様部で行われるすべてのメンバー宣言には、それに対応する構造がCREATE
TYPE
文またはCREATE
TYPE
BODY
文内に存在する必要があります。
自分のスキーマ内で型本体を作成または再作成する場合は、CREATE
TYPE
システム権限またはCREATE
ANY
TYPE
システム権限が必要です。他のユーザーのスキーマ内でオブジェクト型を作成する場合は、CREATE
ANY
TYPE
システム権限が必要です。他のユーザーのスキーマ内でオブジェクト型を置換する場合は、DROP
ANY
TYPE
システム権限が必要です。
構文
型本体はPL/SQLを使用して定義されます。このため、このマニュアルの構文図ではSQLキーワードのみを示します。PL/SQLの構文、セマンティクスおよび例については、『Oracle Database PL/SQL言語リファレンス』を参照してください。
create_type_body::=
(plsql_type_body_source
については、『Oracle Database PL/SQL言語リファレンス』を参照してください。)
セマンティクス
OR REPLACE
OR
REPLACE
を指定すると、既存の型本体を再作成できます。この句を指定した場合、既存の型本体の定義をはじめに削除しなくても、その定義を変更できます。
再作成されたオブジェクト型本体に対する権限を付与されているユーザーは、権限を再付与されなくても、そのオブジェクト型本体を使用および参照できます。
この句を使用した場合、ALTER
TYPE
... REPLACE
文によって追加された仕様部に、新規メンバー・サブプログラム定義を追加できます。
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 ]
この句を省略すると、型本体は、EDITIONABLE
またはNONEDITIONABLE
を型仕様部から継承します。この句を指定する場合は、型仕様部と一致させる必要があります。
plsql_type_body_source
plsql_type_body_source
の構文およびセマンティクスについては、『Oracle Database PL/SQL言語リファレンス』を参照してください。