TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-05-18 |
제목 | REF TYPE 사용 예제 | ||
---|---|---|---|
REF TYPE 사용 예제
================= . 오브젝트 reference 할 수 있는 값을 가지는 데이터 타입 . 오브젝트와 오브젝트의 관계 표현에 유용 < sample > -- object table 생성, data insert SQL> insert into address_tbl values ('55 Madison Ave', 'Madison', 'WI', '53715') ; SQL> insert into address_tbl values (address('2 Avocet Drive', 'Redwood Shores', 'CA', '95054' )); SQL> select value(p) from address_tbl p; ADDRESS('55 Madison Ave', 'Madison', 'WI', '53715') ADDRESS('2 Avocet Drive', 'Redwood Shores', 'CA', '95054') -- ref의 값을 특정 table로 제한 SQL> create table address_ref_tbl ( empno number, address_ref ref address scope is address_tbl); -- Insert SQL> insert into address_ref_tbl select 10, ref(p) from address_tbl p where state = 'WI'; SQL> insert into address_ref_tbl values (20, null); SQL> update address_ref_tbl set address_ref = (select ref(p) from address_tbl p where state = 'CA') where empno = 20 ; -- Select SQL> select * from address_ref_tbl; 10 0000220208910A3F700F3811D3A2300010A4F93C83910A3F6F0F381 .... 20 000220208910A3F710F3811D3A2300010A4F93C83910A3F6F0F3811 ... -- ref가 가리키는 object를 select SQL> select empno, deref(address_ref) from address_ref_tbl; 10 ADDRESS('55 Madison Ave', 'Madison', 'WI', '53715') 20 ADDRESS('2 Avocet Drive', 'Redwood Shores', 'CA', '95055') -- ref가 가리키는 object의 attribute를 select SQL> select p.address_ref.zip from address_ref_tbl p; 53715 95054 -- reference하는 오브젝트의 값이 변한 경우 -> select 결과도 따라 변한다. SQL> update address_tbl set zip = '95055' where zip= 95054; SQL> select empno, deref(address_ref) from address_ref_tbl; 10 ADDRESS('55 Madison Ave', 'Madison', 'WI', '53715') 20 ADDRESS('2 Avocet Drive', 'Redwood Shores', 'CA', '95055') -- update SQL> update address_ref_tbl set address_ref = (select ref(p) from address_tbl p where zip ='95055') |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |