■ Data Skill ■/PL-SQL

PL/SQL (19) - Collections (중첩테이블 - Nested Table)

한길(One Way) 2023. 3. 18.

인덱스 테이블과 달리 행이 순서대로 정렬되지 않은 모음이다.

특정 데이터형을 지원하지 않는다.

초기화하려면 constructor 메소드를 사용해야 한다.

인덱스 범위는 -2,147,483,647 ~ 2,147,483,647 이다.

검색할 때 항목은 연속적으로 색인화된다.

 

 

중첩테이블 선언

- INDEX BY 절이 사용되지 않는다. 이 절이 있으면 인덱스 테이블, 없으면 중첩 테이블.

TYPE 형이름 IS TABLE OF 데이터형 [NOT NULL];

- 항목을 추가하기 전에 생성자를 호출하여 테이블을 초기화 시킨다.

- 생성자는 오브젝트에 실제로 메모리를 할당하고, 그 오브젝트와 연결된 데이터 구조체를 초기화시키는 함수를 말한다.

- 중첩테이블에서 생성자 함수는 모음을 실제로 생성한 다음, 그것을 선언한 변수에 할당하는 것을 말한다.

 

 

중첩테이블 초기화

TYPE dept_table IS TABLE OF department$ROWTYPE;
depts dept_table; -- depts 중첩테이블 변수 선언

depts := dept_table(); -- 생성자 함수 호출. 형이름(). ()안에 아무것도 넣지 않으면 빈 테이블이 생성된다.

- dept_table(dept1, dept2) 처럼 항목에 대한 값을 넣으면 테이블에 값이 들어간다.

 

 

중첩테이블 확장

- extend 메소드를 사용해서 항목을 추가한다.

- 모음.EXTEND;

- 모음.EXTEND(5,1); -- 첫번째 항목을 5번째에 복사한다.

 

 

중첩테이블 삭제

- 모음.DELETE(10)

- 모음.TRIM(끝에서부터 잘라낼 항목수)

728x90

댓글