TECH
QUESTION
자주하는 질문답변 입니다.
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 | |||
---|---|---|---|
등록된 코멘트가 없습니다. |