Oracle

Oracle:使用對像類型 udt 更新表

  • June 12, 2017

我有這個 Oracle 程式碼:

Create type address_ty as object( street varchar2(50),city varchar2(50),prov varchar2(50),cap number);

Create type person_ty as object( name varchar2(50), address address_ty);

Create table client (client_id number,person person_ty);

insert into client
values(1,person_ty('pinco pallo',
        address_ty('Boulevard street' ,'torino','to',10100)));
Commit;

select c.client_id,
    c.person.name,
    c.person.address.street,
    c.person.address.city,
    c.person.address.prov,
    c.person.address.cap
from client c;

一切正常。

現在我想更新 c.person.address.prov

我試過:

update client
set client.person.address.prov='MI'
where client.client_id=1

但我得到一個錯誤。

Ora-00904:“client.person.address.prov”標識符無效。

我怎樣才能更新現場省?

謝謝您的回答。

使用別名。更新具有對像類型的表時是必需的。 更新

t_alias

為要在語句的其他位置引用的表、視圖或子查詢指定相關名稱(別名)。如果 DML_table_expression_clause 引用任何對像類型屬性或對像類型方法,則需要此別名。

Create table client (client_id number,person person_ty);

insert into client 
values(1,person_ty('pinco pallo',
        address_ty('Boulevard street' ,'torino','to',10100)));
Commit;

...

update client c
set c.person.address.prov='MI'
where c.client_id=1;

1 row updated.

引用自:https://dba.stackexchange.com/questions/175999