VARRAY
- 가변 크기 배열은 최대 크기를 고정시킬 수 있다는 것을 제외하면 중첩테이블과 유사하다.
- VARRAY 생성시 최대 크기를 설정하기 때문에, 항목을 추가할수록 여유공간이 없어지게 된다.
- 크기를 처음에 정해버리기 때문에 한번 추가된 항목은 삭제할 수 없다.
- 각각의 배열 요소가 순서대로 유지된다.
생성자
- varray를 사용하기 전에 생성자(Constructor)를 호출하여 초기화 시켜야한다.
- 생성자에는 파라미터를 전달할 수 있으며, 이느 배열 요소를 생성하는데 사용된다.
- 파라미터를 전달하지 않으면 빈 배열을 생성한다.
배열의 선언과 초기화
TYPE 형이름 IS VARRAY(크기) OF 항목형 [NOT NULL];
|
- 크기 : 배열이 가질 요소의 개수
- 항목형 : 배열의 요소에 대한 데이터형
DECLARE
TYPE dept_array IS VARRAY(100) OF VARCHAR2(30);
-- 배열 형 선언, 배열의 요소 개수는 100개. 요소의 데이터형은 VARCHAR2(30)
depts dept_array; -- 배열 변수 선언
inx1 PLS_INTEGER;
BEGIN
depts : dept_array('Dept One', 'Dept Two');
-- 생성자를 호출하여 배열을 초기화한다. 첫번째, 두번째 요소에 값을 할당한 것이며, 3번째부터 100번째까지는 비어있다.
FOR inx1 IN 1..2 LOOP
DBMS_OUTPUT.PUT_LINE(depts(inx1));
END LOOP
-- 배열의 요소가 2개이므로 depts(1), depts(2)에 들어있는 값을 출력한다.
END;
/
|
배열에 요소 추가
- EXTEND 메소드를 호출하여 요소를 추가할 수 있다.
DECLARE
CURSOR all_depts IS
SELECT * FROM department ORDER BY dept_name;
TYPE dept_array IS VARRAY(100) OF department%ROWTYPE;
depts dept_array;
inx1 PLS_INTEGER;
BEGIN
inx1 := 0;
depts := dept_array(); -- 배열 초기화. 항목은 0.
FOR dept IN all_depts LOOP
inx1 := inx1 + 1;
depts.extend();
depts(inx1).dept_id := dept.dept_id;
depts(inx1).dept_name := dept.dept_name;
END LOOP;
...
|
728x90
'■ Data Skill ■ > PL-SQL' 카테고리의 다른 글
PL/SQL (20) - 트리거 (Trigger) (0) | 2023.03.18 |
---|---|
PL/SQL (19) - Collections (중첩테이블 - Nested Table) (0) | 2023.03.18 |
PL/SQL (17) - Collections (Index-by Table) (1) | 2023.03.18 |
PL/SQL (16) - 오브젝트 타입 (BFILE) (0) | 2023.03.18 |
PL/SQL (15) - 오브젝트 타입 (CLOB, BLOB) (1) | 2023.03.17 |
댓글