PL/SQL 데이터 타입에 대해 안내해드리겠습니다.
- Scalar Data Type
- Composite Data Type (collections and records)
Scalar Data Type
기본 SQL에도 제공하는 number(수치형), char(고정문자형), varchar2(가변문자형) 타입은 PL/SQL에서도 제공해드립니다. SQL에서 varchar2가 최대 4000byte만큼 확장할 수 있는데 비해 PL/SQL 에서는 32767byte까지 확장 가능합니다. (명칭이 동일한만큼 묵시적인 형변환이 이루어집니다)
Composite Data Type (collections and records)
뿐만 아니라, PL/SQL에서 제공하는 타입이 존재합니다. 보통의 개발언어에서 볼 수 있는 boolean(논리형), true 와 false 두 가지 값을 가집니다. 레코드(record) 타입, 로(row) 타입, 칼럼(column) 타입, 테이블(table) 타입이 있습니다. 그 외에도 커서(cursor), 사용자정의예외(user-defined exception) 등을 제공합니다. 아래와 같이 데이터 타입을 확인할 수 있는 스크립트를 준비해 보았습니다. 해당 예시를 확인해 보세요~
SET SERVEROUTPUT ON
DECLARE
NUM NUMBER (3, 2) := 1.38; --1~38
CHA CHAR (100) := '1.2.1.고정문자형 CHAR(1~32767)';
VAR VARCHAR2 (100) := '1.2.2.가변문자형 VARCHAR2(1~32767)';
DAT DATE := SYSDATE;
BOO BOOLEAN := TRUE;
TYPE RECUSERDEFINED IS RECORD
(
N NUMBER (1),
V VARCHAR2 (100)
);
TYPERECORD RECUSERDEFINED;
ROWTYPEEMP EMP%ROWTYPE;
TYPEEMPEMPNO EMP.EMPNO%TYPE;
TYPE TABUSERDEFINED IS TABLE OF VARCHAR2 (1)
INDEX BY PLS_INTEGER;
TYPETABLE TABUSERDEFINED;
BEGIN
--데이터 유형 DATA TYPE
--1.1. 수치형 NUMBER
DBMS_OUTPUT.PUT_LINE (NUM);
--1.2.1. 고정문자형 CHAR
DBMS_OUTPUT.PUT_LINE (CHA);
--1.2.2. 가변문자형 VARCHAR2
DBMS_OUTPUT.PUT_LINE (VAR);
--1.3. 날짜형 DATE
DBMS_OUTPUT.PUT_LINE (DAT);
--1.4. 논리형 BOOLEAN
DBMS_OUTPUT.PUT_LINE (SYS.DIUTIL.BOOL_TO_INT (BOO));
--2.1. 레코드 RECORD TPYE
TYPERECORD.V := 'My name is BeomSang';
DBMS_OUTPUT.PUT_LINE (TYPERECORD.V);
--2.2.1. ROW TYPE
ROWTYPEEMP.EMPNO := '7777';
DBMS_OUTPUT.PUT_LINE (ROWTYPEEMP.EMPNO);
--2.2.2. ROW COL TYPE
TYPEEMPEMPNO := '3333';
DBMS_OUTPUT.PUT_LINE (TYPEEMPEMPNO);
--2.3. 테이블 TABLE TYPE
TYPETABLE (1) := '9';
DBMS_OUTPUT.PUT_LINE (TYPETABLE (1));
END;
/