TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-05-18 |
제목 | OBJECT TABLE 사용 예제 | ||
---|---|---|---|
OBJECT TABLE 사용 예제
==================== 오브젝트 테이블은 오브젝트를 ROW로 가지고 있는 테이블을 말한다. 오브젝트 테이블에 오브젝트가 insert되면 시스템에서는 자동으로 유일한 값인 OID(Object ID)를 부여한다. OID는 16 byte(128 bit)로 구성되어 있다. 동일한 attribute value를 가지고 있다 하더라도 이들 오브젝트들의 OID는 서로 다르다. 오브젝트 테이블에 저장된 object를 처리하는데 다음과 같은 함수를 이용할 수 있다. - VALUE() 이 함수는 오브젝트 테이블에 저장되어 있는 object instance를 리턴하는 함수 value()를 사용할 때 argument로 오브젝트 자체를 언급하기 위해서는 테이블 alias 기능을 사용해야 한다. - REF() 이 함수는 오브젝트의 ref를 리턴한다. 즉 system이 각 로우에 할당한 unique한 값인 OID 값을 리턴한다. - DEREF() ref 데이터를 dereference를 함으로서, 이 포인터가 가리키고 있는 오브젝트의 instance를 리턴한다 < sample > -- object type과 object table의 생성 SQL> create or replace type address as object (street varchar2(80), city varchar2(80), state char(2), zip varchar2(10)); SQL> create table address_tbl of address ( street constraint pk_address primary key); -- object table에 constraint 생성, object type에 대해서는 생성 불가능 SQL> create table address_tbl of address ( street constraint pk_address primary key, city not null, unique (city ), check ( state in ('LA', 'CA' )), state default 'LA' ); -- constraint 추가 SQL> create table address_tbl of address; SQL> alter table address_tbl add primary key (street); SQL> alter table address_tbl modify ( city not null); SQL> alter table address_tbl modify ( city default 'LA'); -- 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' )); -- Select -- value를 select SQL> select * from address_tbl; 55 Madison Ave Madison WI 53715 2 Avocet Drive Redwood Shores CA 95054 -- object를 select 할때는 value()를 이용 SQL> select value(p) from address_tbl p; ADDRESS('55 Madison Ave', 'Madison', 'WI', '53715') ADDRESS('2 Avocet Drive', 'Redwood Shores', 'CA', '95054') -- object reference를 select 할때는 ref()를 이용 SQL> select ref(p) from address_tbl p; 0000280209910A3F6D0F3811D3A2300010A4F93C83910A3F6D3 ...... 0000280209910A3F6E0F3811D3A2300010A4F93C83910A3F632 ...... -- Update & Delete SQL> update address_tbl set zip = '95055' where zip= 95054; |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |