如何在 sql (oracle) 中操作对象的属性?

How to manipulate an attribute of an object in sql (oracle)?

假设我有这个层次结构:

create or replace type tperson as object(
    fname varchar2(20),
    lname tprenom,
    adress tadr,
    phone_num varchar2(10),
    email varchar2(50)
)not final;

create or replace type tuser under tperson(
    username varchar2(20),
    password varchar2(20)
);

create table agent(
id_ag int,
infos tuser not null
);

insert into agent values(1,tuser('name',tprenom('bilel','dani','lastname3')  
,tadr(3,'ain delfa','miliana','hammama',20), 
'2140547854','email@gmail.com','username','password'));

我如何 select,仅更新 来自代理 table 的单个属性?

我试过了 sql 但没用 :

select infos.fname, infos.lname, infos.adress, infos.phone_num, infos.email, 
infos.username, infos.password from agent where id_ag=1;

但是我收到了这个错误:

invalid identifier 00904. 00000 - "%s: invalid identifier"

我错过了什么?

感谢您的回复。

where 前有一个不应该出现的分号。

在访问用户定义的列时,使用 table 前缀应该没问题。

这是您的 SELECT 查询的语法:

select 
    ag.infos.fname,
    ag.infos.lname,
    ag.infos.adress, 
    ag.infos.phone_num, 
    ag.infos.email, 
    ag.infos.username, 
    ag.infos.password 
from agent ag
where ag.id_ag = 1;

如果您想执行 UPDATE :

update agent ag
set ag.infos.fname = 'foo', ag.infos.lname = 'bar'
where ag.infos.id_ag = 1