プライマリ・コンテンツに移動
Oracle® Database SQL言語リファレンス
11gリリース2 (11.2)
B56299-08
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

CREATE TYPE

用途

オブジェクト型はPL/SQLを使用して定義されます。このため、この項では一般的な情報について説明します。構文およびセマンティクスの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

CREATE TYPE文を使用すると、オブジェクト型SQLJオブジェクト型、名前付きの可変配列(VARRAY)、ネストした表型または不完全なオブジェクト型の仕様部を作成できます。CREATE TYPE文およびCREATE TYPE BODY文を使用してオブジェクト型を作成します。CREATE TYPE文では、オブジェクト型の名前、オブジェクトの属性、メソッドおよびその他のプロパティを指定します。CREATE TYPE BODY文には、その型を実装するメソッドに対するコードが含まれます。


注意:

  • 型仕様で属性のみ宣言し、メソッドは宣言しないオブジェクト型を作成する場合は、型本体を指定する必要はありません。

  • SQLJオブジェクト型を作成する場合は、型本体を指定できません。型の実装はJavaクラスとして指定されます。


不完全型とは、フォワード型定義によって作成される型です。このオブジェクト型には名前はありますが、属性およびメソッドがないため、不完全といわれます。他の型からの参照が可能なため、互いに参照する型の定義に使用できます。ただし、不完全オブジェクト型を使用して表やオブジェクト列またはネストした表型の列を作成する場合は、型を完全に指定しておく必要があります。


関連項目:

  • 型のメンバー・メソッドの作成については、「CREATE TYPE BODY」を参照してください。

  • オブジェクト、不完全型、VARRAYおよびネストした表の詳細は、『Oracle Databaseオブジェクト・リレーショナル開発者ガイド』を参照してください。


前提条件

自分のスキーマ内に型を作成する場合は、CREATE TYPEシステム権限が必要です。他のユーザーのスキーマ内に型を作成する場合は、CREATE ANY TYPEシステム権限が必要です。これらの権限は、明示的に取得することもロールを介して取得することもできます。

サブタイプを作成する場合は、UNDER ANY TYPEシステム権限またはスーパータイプに対するUNDERオブジェクト権限が必要です。

型の所有者には、型定義内で参照する他のすべての型にアクセスするためのEXECUTEオブジェクト権限が明示的に付与されている必要があります。または、EXECUTE ANY TYPEシステム権限が付与されている必要があります。所有者は、これらの権限をロールを介して取得することはできません。

型の所有者が、型にアクセスする権限を他のユーザーに付与する場合、所有者には、参照型に対するGRANT OPTION付きのEXECUTEオブジェクト権限、またはADMIN OPTION付きのEXECUTE ANY TYPEシステム権限が必要です。これらの権限がないと、型の所有者は、型にアクセスする権限を他のユーザーに付与できません。

構文

型はPL/SQLを使用して定義されます。このため、このマニュアルの構文図ではSQLキーワードのみを示します。PL/SQLの構文、セマンティクスおよび例については、『Oracle Database PL/SQL言語リファレンス』を参照してください。

create_type::=

create_type.gifの説明が続きます。
図「create_type.gif」の説明

(plsql_sourceについては、『Oracle Database PL/SQL言語リファレンス』を参照してください。)

セマンティクス

OR REPLACE

OR REPLACEを指定すると、既存の型を再作成できます。この句を指定した場合、既存の型の定義をはじめに削除しなくても、その定義を変更できます。

再作成するオブジェクト型に対する権限があらかじめ付与されている場合は、再作成後にあらためて権限を付与されなくてもそのオブジェクト型を使用および参照できます。

ファンクション索引が型に依存している場合、索引にDISABLEDのマークが付きます。

plsql_source

plsql_sourceの構文およびセマンティクスについては、『Oracle Database PL/SQL言語リファレンス』を参照してください。