DROP TYPE
目的
オブジェクト型はPL/SQLを使用して定義されます。オブジェクト型の作成、変更および削除の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。
前提条件
削除するオブジェクト型、VARRAY型またはネストした表型が自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、DROP
ANY
TYPE
システム権限が必要です。
構文
drop_type::=
IF EXISTS
IF EXISTS
は、既存の索引を削除する場合に指定します。
DROP
にIF NOT EXISTS
を指定すると、ORA-11544: Incorrect IF EXISTS clause for ALTER/DROP statement
が発生します。
セマンティクス
schema
型が含まれているスキーマを指定します。schema
を指定しない場合、型は自分のスキーマ内にあるとみなされます。
type_name
削除するオブジェクト型、VARRAY型またはネストした表型の名前を指定します。型依存性または表依存性のない型のみ削除できます。これには、ごみ箱内の表が含まれます。
タイプを削除すると、サブタイプなどの依存オブジェクトはリサイクル・ビンには配置されず、リサイクル・ビン内の古い依存オブジェクトがすべてパージされます。
type_name
がスーパータイプの場合、FORCE
も指定しないと、この文は正常に実行されません。FORCE
を指定すると、そのスーパータイプに依存するすべてのサブタイプが無効になります。
type_name
が統計タイプの場合、FORCE
も指定しないと、この文は正常に実行されません。FORCE
を指定した場合、最初にtype_name
に関連付けられたすべてのオブジェクトの関連付けが解除され、type_name
が削除されます。
関連項目:
統計タイプの詳細は、「ASSOCIATE STATISTICS」および「DISASSOCIATE STATISTICS」を参照してください。
type_name
が統計タイプに関連付けられたオブジェクト型の場合、最初にこの統計タイプからtype_name
の関連付けが解除され、その後でtype_name
が削除されます。ただし、統計タイプを使用して統計情報が収集された場合、この統計タイプからtype_name
の関連付けを解除することはできません。このため、この文は正常に実行されません。
type_name
が索引タイプの実装タイプの場合、索引タイプにINVALID
のマークが付けられます。
type_name
にパブリック・シノニムが定義されている場合、このシノニムも削除されます。
FORCE
オプションを指定していない場合に削除できるのは、依存性のないスタンドアロンのスキーマ・オブジェクトとして定義されているオブジェクト型またはネストした表型またはVARRAY型のみです。これはデフォルトの動作です。
関連項目:
FORCE
FORCE
を指定すると、依存するデータベース・オブジェクトを持つ型でも強制的に削除できます。削除する型に依存するすべての列にUNUSED
のマークが付けられ、それらの列にアクセスできなくなります。
ノート:
FORCE
を使用して、依存性のある型を削除することはお薦めしません。これらには、ごみ箱内の依存表が含まれます。この操作はリカバリ不能であり、依存表または列のデータにアクセスできなくなる場合があります。
表の管理を参照してください。
VALIDATE
型を削除するときにVALIDATE
を指定すると、格納されているこの型のインスタンスがスーパータイプのいずれかの置換可能な列の範囲であることが検証されます。このようなインスタンスがない場合、削除操作が完了します。
この句はサブタイプのみに意味があります。明示的な型または表依存性のないサブタイプを安全に削除するために、このオプションの使用をお薦めします。
例
オブジェクト型の削除: 例
次の文は、オブジェクト型person_t
を削除します。このオブジェクト型を作成する例については、『Oracle Database PL/SQL言語リファレンス』を参照してください。person_tに依存するすべての列は、UNUSED
のマークが付けられ、アクセスできなくなります。
DROP TYPE person_t FORCE;