oracle – 什么是类型的子对象?
在all_objects中有一个名为SUBOBJECT_NAME的列,文档说这是:
如果您执行以下查询: select * from all_objects where owner = 'MDSYS' and object_name = 'SDO_TGL_OBJECT_ARRAY' 您发现MDSYS.SDO_TGL_OBJECT_ARRAY有一个名为$VNS_1的子对象.它是什么?类型如何具有子对象? 解决方法有时文档意味着它所说的内容.举例来说,我有一个名为RANGE_PART_INTERVAL_TABLE的表,它有三个分区.我对ALL_OBJECTS运行相关查询,然后! SQL> select object_name,object_type,subobject_name 2 from all_objects 3 where object_name = 'RANGE_PART_INTERVAL_TABLE' 4 / OBJECT_NAME OBJECT_TYPE SUBOBJECT_NAME ------------------------------ ------------------- --------------- RANGE_PART_INTERVAL_TABLE TABLE RANGE_PART_INTERVAL_TABLE TABLE PARTITION SYS_P60 RANGE_PART_INTERVAL_TABLE TABLE PARTITION SYS_P61 RANGE_PART_INTERVAL_TABLE TABLE PARTITION SYS_P62 SQL> 我认为问题是使用“对象”这个词. Oracle来自面向对象编程之前的一段时间(如果你能想象这样的话).它的数据字典使用“数据库对象”来表示“事物” – 表,视图,序列,过程等.当Oracle将OOP引入数据库时??,它使用关键字TYPE来获取这些新东西.因此,视图ALL_OBJECTS是您的架构拥有权限的所有内容的列表,而不仅仅是用户定义的类型. 编辑 需要明确的是,这与类型继承无关. SQL> create type my_type as object (attr1 number) not final 2 / Type created. SQL> create type my_sub_1 under my_type (attr2 date) 2 / Type created. SQL> select object_name,subobject_name 2 from all_objects 3 where object_name = 'MY_TYPE' 4 / OBJECT_NAME OBJECT_TYPE SUBOBJECT_NAME ------------------------------ ------------------- --------------- MY_TYPE TYPE SQL> USER / ALL / DBA_TYPES视图显示了Inheritence,它显示了派生类型的超类型:… SQL> select type_name,supertype_name 2 from all_types 3 where type_name in ('MY_TYPE','MY_SUB_1') 4 / TYPE_NAME SUPERTYPE_NAME ------------------------------ ------------------------------ MY_SUB_1 MY_TYPE MY_TYPE SQL> EDIT2 TheCoop指出:
在特定情况下,他们引用$VNS_1是Type Evolution的人工制品.当我们在使用Type之后执行ALTER TYPE时,Oracle会创建它的一个版本.我们可以在%_TYPE_VERSIONS视图中看到这个…. SQL> select * from dba_type_versions 2 where owner = 'MDSYS' 3 and type_name = 'SDO_TGL_OBJECT_ARRAY' 4 / OWNER TYPE_NAME VERSION# ------------------------------ ------------------------------ ---------- TYPECODE STATUS LINE ------------------------------ ------- ---------- TEXT ------------------------------------------------------------------------------ HASHCODE ---------------------------------- MDSYS SDO_TGL_OBJECT_ARRAY 1 COLLECTION VALID 1 type SDO_TGL_OBJECT_ARRAY 61EB9AEC10198F71C141D13B32F52C00A8 MDSYS SDO_TGL_OBJECT_ARRAY 1 COLLECTION VALID 2 as VARRAY (1000000) of SDO_TGL_OBJECT 61EB9AEC10198F71C141D13B32F52C00A8 MDSYS SDO_TGL_OBJECT_ARRAY 2 COLLECTION VALID 1 type SDO_TGL_OBJECT_ARRAY 6184209BAEF1F731B937760C2BA8B45688 MDSYS SDO_TGL_OBJECT_ARRAY 2 COLLECTION VALID 2 as VARRAY (1000000) of SDO_TGL_OBJECT 6184209BAEF1F731B937760C2BA8B45688 MDSYS SDO_TGL_OBJECT_ARRAY 2 COLLECTION VALID 3 alter type SDO_TGL_OBJECT_ARRAY modify limit 10000000 cascade 6184209BAEF1F731B937760C2BA8B45688 SQL> Find out more. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |