gpt4 book ai didi

oracle - oracle 在哪里存储我的对象实例?

转载 作者:行者123 更新时间:2023-12-01 22:53:35 26 4
gpt4 key购买 nike

我创建了以下两种对象类型:

create or replace type person_typ as object (
person# varchar(10)
) not final;

create or replace type salesperson_typ under person_typ (
salesperson# varchar(10),
sSurname varchar(10),
sForename varchar(10),
dateOfBirth date
);

create table person_tab of person_typ (
person# primary key
);

我使用 :

插入了一行
insert into person_tab
values (salesperson_typ('p1','s1', 'Jones', 'John', sysdate));

我可以使用以下方法检索:

select 
treat(value(s) as salesperson_typ).person# as person_number,
treat(value(s) as salesperson_typ).sSurname as sSurname
from
person_tab s
;

但是,如果我查看 person_tab,我只会看到以下内容:

SQL> select * from person_tab;

PERSON#
----------
p1

我很好奇,销售人员 特定数据存储在哪里?我几乎期望找到一张 salesperson 表,但我找不到任何明显的东西。

最佳答案

您的对象无形地存储在同一个表中。您可以通过查询 USER_TAB_COLS 来检查列:

SELECT *
FROM user_tab_cols
WHERE table_name = 'PERSON_TAB';

然后您可以使用您刚刚在查询中发现的列名*(SYS_NC_ROWINFO$ 除外,这会为我抛出错误)。

SELECT SYS_NC_OID$
,SYS_NC_TYPEID$
--,SYS_NC_ROWINFO$
,PERSON#
,SYS_NC00005$
,SYS_NC00006$
,SYS_NC00007$
,SYS_NC00008$
FROM PERSON_TAB;

注意*

您不应该在任何应用程序中使用这些列名,因为它们是内部的并且可能会在未来的补丁/版本中发生变化。

关于oracle - oracle 在哪里存储我的对象实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13660939/

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