Oracle

게시글 보기
작성자 유건데이타 등록일 2015-05-18
제목 VARRAY 사용 예제
VARRAY 사용 예제
===============

. Array는 ordered element들의 집합이다.
. 요소의 개수에 따라 변동적으로 size가 결정된다
. VARRAY가 가질 수 있는 최대 element의 개수는 선언 시에 결정된다.
. 오브젝트 데이터 타입과 마찬가지로 VARRAY 데이터 타입을 정의할 때 실제 space는
할당되지 않는다. 실제 space는 테이블이나 오브젝트에서 컬럼이나 attribute로
선언되어 사용할 때 할당되는데, 모든 요소는 하나의 컬럼에 저장된다.
(4k 이하이면 in-line, 4k 이상이면 out-line BLOB에 저장 )


< sample >

-- varray type 생성 및 table 생성
SQL> create type phonelist as varray(10) of varchar2(12);
SQL> create type phone_list_t as object ( phone phonelist );
SQL> create table phonelist_tbl of phone_list_t;

-- Insert
SQL> insert into phonelist_tbl values (phonelist ('3699648',
'3699500'));

-- Select
SQL> select phone from phonelist_tbl;
PHONELIST('3699648', '3699500')

-- SQL에서 하나의 element만을 select할 수는 없다. PL/SQL을 이용해야 함.

DECLARE
CURSOR c1 IS SELECT phone FROM phonelist_tbl;
v_phonelist phonelist ;
-- type phonetab is varray(10) of varchar2(12);
-- v_phonelist phonetab ; 이렇게 선언한 것과는 차이가 있음.
-- pls-386: type mismatch found at 'V_PHONELIST' between FETCH
-- cursor and INTO variables
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO v_phonelist;
EXIT WHEN C1%NOTFOUND;

FOR j IN 1 .. v_phonelist.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(v_phonelist(j));
END LOOP;
END LOOP;
CLOSE c1;
END;
수행결과 >
3699648
3699500
Comment
등록된 코멘트가 없습니다.