본문 바로가기
BackEnd/DB, SQL

SQL 22편: 레코드와 컬렉션

by summer_light 2022. 1. 20.

레코드

- 자료형이 각기 다른 데이터를 하나의 변수에 저장하는 데 사용한다.

- 변수는 여러 개 지정할 수 있고(한 줄 당 변수 한 개), 각 변수는 쉼표로 구분한다.

- 레코드에 포함된 변수를 사용할 때는 레코드이름.변수이름 으로 사용할 수 있다. 

 

 

레코드 '자료형' 생성하기

TYPE 레코드이름 IS RECORD(

변수이름 자료형 NOT NULL := 표현식

)

 

위에서 생성한 자료형으로 변수를 만들 때는 아래 쪽에 다음과 같이 선언해주어야 한다.

 

변수이름 레코드이름;

 

 

레코드를 사용하여 INSERT 하기

INSERT INTO 테이블이름

VALUES 레코드변수; 

 

 

레코드를 사용하여 UPDATE 하기

UPDATE 테이블이름

SET ROW = 레코드변수

WHERE 조건식;

 

 

 

 

컬렉션

컬렉션의 종류 

- 연관 배열

- 중첩 테이블

- VARRAY(variable-size array)

 

 

연관 배열

- 인덱스라고도 불리는, 키-값으로 구성되는 컬렉션이다. 

- 연관 배열의 자료형으로 레코드를 넣을 경우, 테이블과 같이 사용할 수 있다. 

 

[기본 형식]

TYPE 연관배열이름 IS TABLE OF 자료형 [NOT NULL]

INDEX BY 인덱스자료형;

* 인덱스 자료형: BINARY_INTEGER, PLS_INTEGER, VARCHAR2 등

 

BEGIN 문단에서 

연관배열변수(1)  := '1st data'; 와 같이 변수의 키 1에 '1st data' 라는 값을 대입할 수 있다.

 

 

예제 01. 다른 테이블의 값 그대로 복사하기 

BEGIN 

FOR i IN (SELECT DEPTNO, DNAME FROM DEPT) LOOP
idx := idx + 1;
dept_arr(idx).deptno := i.DEPTNO;
dept_arr(idx).dname := i.DNAME;
END LOOP;

END;

 

 

컬렉션 메서드

EXISTS(n) n인덱스의 존재 여부를 T/F 로 반환
COUNT 컬렉션에 포함되어 있는 요소 개수를 반환 
LIMIT 현재 컬렉션의 최대 크기를 반환
FIRST 첫 번째 인덱스 번호 반환
LAST 마지막 인덱스 번호 반환
PRIOR(n) n인덱스 바로 앞 인덱스 값 반환
NEXT(n) n인덱스 바로 다음 인덱스 값 반환
DELETE - DELETE : 모든요소 삭제
- DELETE(n) : n인덱스의 컬렉션 요소 삭제 
- DELTE(n,m) : n인덱스부터 m인덱스까지의 요소 삭제
EXTEND 컬렉션 크기 증가(중첩 테이블, VARRAY에서 사용)
TRIM 컬렉션 크기 감소(중첩 테이블과 VARRAY에서 사용) 

 

 

댓글