▣ 복합변수란?
▷ 여러가지 다른 유형의 데이터들을 저장하는 변수
▷ Record TYPE 과 Table TYPE으로 나뉨
▣ Record TYPE 변수란??
▷ 데이터 타입이 다른 여러 데이터를 저장할 경우 사용
▷ 지정방법
1. type 타입명 is record()
2. 식별자 type 타입명;
사용 예시)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | declare type emp_rec is record (empNo EMPTEST.EMPNO%type, empSal EMP.SAL%type, empname emp.ename%type, empJob EMPtest.DEPTNO%type); rec1 emp_rec; --emp_rec에 대한 식별자가 rec1 begin select EMPNO, SAL, ename, DEPTNO into rec1 from emp where empno = 7839; dbms_output.put_line('사번 돈 업무처 '); DBMS_OUTPUT.PUT_LINE(rec1.empNo||' '||rec1.empSal||' ' ||rec1.empJOB ||' ' ||rec1.empname); end; / | cs |
1. declare(선언부에서) Record type변수 선언
type emp_rec is record --레코드 타입 선언
(empNo EMP.EMPNO%TYPE,
empSal EMP.SAL%TYPE,
empname EMP.ename%TYPE,
empJob EMP.detpno%TYPE); -- 데이터 타입이 다른 여러 변수들을 지정
rec1 emp_rec; --emp_rec에 대한 식별자를 지정 rec1
2. begin
select EMPNO, SAL, ename, DEPNO
into rec1 -- EMPNO, SAL, ename, DEPTNO를 rec1에 넣겠다.
from emp --emp테이블로부터 뽑아오겠다.
where empno = 7839; --empno가 7839인 데이터를 뽑아오겠다.
3. end;
4. /
▣ Table TYPE 변수(컬렉션)란??
▷ 하나의 테이블에 하나의 컬럼의 데이터 타입을 저장한다.
▷ 컬렉션(배열) : 일반 프로그래밍 언어에서 사용하는 배열 타입을PL/SQL에서는 컬렉션이라고 한다.
▷ 종류
1) 연관배열(associative array/ index-by table) : 키와 값의 쌍으로 구성된 콜랙션, java 의 hash table과 동일한 개념
- key 데이터유형 -> 숫자 : binary_integer, pls_integer
위 두가지 데이터타입은 number보다 작은 저장 영역이 필요, 산술연산의 경우 number보다 빠르다.
문자 : varchar
- 값(value) -> 일반 데이터 타입, 레코드 타입이 값이 될 수 있다.
레코드 타입일 경우 여러개의 값을 가질 수 있다.
2) varray(variable array) : 고정 길이를 가진 배열 일반 프로그래밍에서 사용하는 배열과 같다.
3) 중첩테이블(nested table) : varray와 흡사한 구조의 배열
배열의 크기를 명시하지 않음, 동적으로 배열의 크기가 설정됨.
▷ Table 타입의 선언 형식
1. 정의
TYPE 타입명 IS TABLE OF
EMP.ENAME%TYPE
INDEX BY BINARY_INTEGER;
2. 선언 (메모리화 한다.)
식별자, 타입명;
사용 예시)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | DECLARE tname varchar2(20); type t_emp_name is table of emp.ename%type index by binary_integer; v_name t_emp_name; begin select job into tname from emp where empno = 7369; v_name(0) := tname; dbms_output.put_line(v_name(0)); end; / | cs |
1. DECARE(선언부)에서 tname 을 선언
type t_emp_name is table of
emp.ename%type
index by binary_integer; -- emp.ename타입의 테이블 변수를 선언 key 데이터 유형 설정
v_name t_emp_name; --식별자를 만들어준다
2. BEGIN
select job into tname
from emp
where empno = 7369; -- emp 테이블의 empno가 7369인 데이터의 job을 선택해
tname에 넣어주겠다.
v_name(0) := tname; -- v_name의 0번째에 tname을 넣어주겠다.
dbms_output.put_line(v_name(0)); -- v_name의 0번째를 출력하겠다.
3. END;
4. /
'Programming > DataBase' 카테고리의 다른 글
(SQL) 커서(Cursor)에 대해 알아보자 (0) | 2018.04.23 |
---|---|
(SQL) 바인드변수란 무엇일까? (0) | 2018.04.23 |
(SQL) PL/SQL 기본적인 변수에 대하여 알아보자 (0) | 2018.04.23 |
[SQL] PL/SQL이란 무엇일까? (0) | 2018.04.23 |
(SQL) SQL Developer를 설치해보자! (1) | 2018.04.22 |