PLSQL - Record
Record
- PL/SQL에서 제공하는 복합형 데이터 타입
사용자 정의형 레코드
레코드에서는 레코드를 이루고 있는 각 칼럼을 필드라고 부른다. 테이블과 유사하게 생겼지만 , 하나의 row만을 가질 수 있다.
1
2
3
4TYPE 레코드명 IS RECORD (
필드명 필드타입 [NOTNULL] [:= 디폴트값],
필드명 필드타입 [NOTNULL] [:= 디폴트값],
)실제 Record 타입을 선언하는 예시를 보면 다음과 같다. 이때 필드타입으로 %TYPE 문법을 사용할 수도 있다.
1
2
3
4
5
6
7
8
9
10
11
12DECLARE
-- 특정 레코드 타입 선언
TYPE depart_rect IS RECORD (
department_id NUMBER(6), --department_id departments.department_id%TYPE
department_name VARCHAR2(80),
parent_id NUMBER(6),
manager_id NUMBER(6)
);
-- 레코드 타입의 변수 선언
vr_dep depart_rect;
BEGIN
END;Record 타입 변수의 필드에 접근할때는 레코드타입변수.필드명으로 접근할 수 있다.
1 | DECLARE |
- Record 타입 변수를 활용해 테이블에 INSERT 또는 UPDATE할 수 있다. 이떄 전제조건은 당연히 테이블의 칼럼 개수 , 타입과 레코드의 필드의 칼럼 개수, 타입이 동일해야한다.
1 | CREATE TABLE dep AS |
테이블형 레코드
- 레코드를 선언할때 특정 테이블의 모든 칼럼을 받아서 사용하는 레코드를 정의할 수도 있다
1 | 레코드변수명 테이블명%ROWTYPE |
- 실제 사용예시를 보면 다음과 같다. 테이블을 선언한뒤에 그 테이블의 하나 tuple을 record라고 생각하면 이해가 빠를 것 같다.
1 | CREATE TABLE dep AS |
커서형 레코드
- 말그대로 커서를 레코드 변수로 받는 것을 말한다. 테이블형 레코드와 동일한 문법이나, 단지 테이블 자리에 커서명이 온다.
1
레코드변수명 커서명%ROWTYPE
1 | DECLARE |
중첩 레코드
- 하나의 레코드 필드의 타입으로 또 다른 레코드를 사용할 수 있다. 이런 형태를 중첩 레코드라고 부른다.
1 | DECLARE |