gpt4 book ai didi

oracle - sys.col$ 和 sys.coltype$ 的区别

转载 作者:行者123 更新时间:2023-12-04 20:40:55 26 4
gpt4 key购买 nike

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

为什么第一个结果集包含三列,而第二个结果集只包含一列。我想更多地了解这两个表之间的差异。

谢谢。

最佳答案

COL$是所有列的数据字典表。即表中所有可见的列加上不可见的列。所以第一个查询返回 ID、COL1 和 SYS_NC00003$ 的三行。这是 XMLTYPE 列的离线存储(这就是 COL# 相同而 INTCOL# 不同的原因)。
COLTYPE$是声明为复杂数据类型的列的数据字典表。所以COL$.TYPE#对于 COl1 是 58 ;这映射到 ANYDATE 或 XMLTYPE 的数据类型,它们是复杂的数据类型。另外两列的数据类型为 NUMBER ( COL$.TYPE# = 2 ) 和 CLOB ( COL$.TYPE# = 112 ),它们都是 Oracle “原语”。所以这就是为什么COLTYPE$的查询中只有一条记录的原因。

关于oracle - sys.col$ 和 sys.coltype$ 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26397442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com