Oracle
Oracle:使用對像類型 udt 更新表
我有這個 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.