create table T
(
ID number,
COL1 SYS.XMLTYPE
)XMLType COLUMN COL1 STORE AS CLOB;
select obj#,col#,intcol#,name,type#
from sys.col$
where obj#='98134'
OBJ# COL# INTCOL# NAME TYPE#
------ ---- ---------- ------- ------
98134 1 1 ID 2
98134 2 2 COL1 58
98134 2 3 SYS_NC00003$ 112
select obj#,col#,intcol#
from sys.coltype$
where obj#=98134
OBJ# COL# INTCOL#
------ ---- ----------
98134 2 2
为什么第一个结果集包含三列,但第二个结果集只包含一列。我想更多地了解这两个表之间的差异。
感谢。
答案 0 :(得分:2)
COL$
是所有列的数据字典表。这就是桌子上所有可见的列加上不可见的列。因此第一个查询返回ID,COL1和SYS_NC00003 $的三行。这是XMLTYPE列的离线存储(这就是COL#相同而INTCOL#不同的原因)。
COLTYPE$
是声明为复杂数据类型的列的数据字典表。所以COl1的COL$.TYPE#
是58;这映射到ANYDATE或XMLTYPE的数据类型,它们是复杂的数据类型。其他两列的数据类型为NUMBER(COL$.TYPE# = 2
)和CLOB(COL$.TYPE# = 112
),它们都是Oracle“原语”。这就是为什么在COLTYPE$