[특 징]
1. ORACLE과 친하다
: ORACLE 개발했기에 모든 SQL 데이터 유형을 지원한다.
2. 절차처리
: 프로그래밍처럼 로직대로 처리가 가능
3. 이식성이 좋다
: 다양한 OS라도 동작이 가능하다.
4. 성능우수
: 문장 단위로 전송하며 통신을 여러번 수행을 해야한다.
프로그램 단위로 OCACLE에 일괄전송
[STORED 서브 프로그램]
: 프로그램을 돌리지 않아도 이름만 가지고 자동으로 처리가 가능하다!
[블록구조]
DECLARE : 선언부 = 객체 정의를 담당
BEGIN : 실행부 = 필수작성이며 필요한 로직을 담당한다
EXCEPTION : 예외부 = 예외처리를 담당
END; : 마침부 = 마침표랑 같다.
=> 중첩은 BEGIN 문 안에서 쓰인다.
구조는 같다.
[변수 & 상수]
1) 변수
- 변수는 VAR로 선언 후 값을 대입한다.
- 변수 정의
EX) 변수명 데이터타입 NOT NULL := DEFAULT <값>
-> VAR VARCHAR2(10) DEFAULT 'SCOTT'
[스칼라 타입]
1) 수치형
= NUMBER로 38자리가 최대다.
2) 문자형
- CHAR = 고정 길이 문자 데이터
- VARCHAR = 가변길이
3) 날짜형
= DATE로 7바이트가 최대한이다.
4) 참 거짓
= BOOLEAN으로 TRUE, FALSE, NULL 로 구성
[콤포지트 타입]
= 사용자가 사전에 데이터 타입 정의
1) 레코드 타입 (RECODE)
- 테이블의 행 같음
- 각 필드명, 타입을 자유롭게 설정 가능
2) 컬렉션 타입 (TABLE)
- 테이블 열처럼 여러값 가짐
- 요소 및 인덱스 구성
- 배열 = 정의된 변수를 결합
[%TYPE & %ROWTYPE]
1) %TYPLE
ORACLE 컬럼 데이터 타입 OR 이미 정의된 변수 데이터 타입
EX) VAR DEPT.DEPTNO%TYPE
= DEPT 테이블의 DEPTNO 컬럼과 같은 데이터 타입을 사용.
<장 점>
1. 컬럼 정의가 변경 되어도 소스 수정이 불필요
EX) 데이터 타입 길이 변경 등
2. 컬럼 정의를 정확히 몰라도 변수 정의 가능
2) %ROWTPYE
테이블 행 구조 참조
- 각 필드 명, 타입은 그대로 참조
- 1개 변수
= 각 컬럼의 데이터 저장을 위해 행 구조와 같은 수의 영역을 확보
EX) 변수명 테이블명%ROWTPYE
[변수 정의시 주의할 점]
1. 정의 되지 않은 변수 참조 X
2. 동일한 데이터 타입도 변수도 하나씩 사용
[상 수]
상수명 CONST 데이터타입 NOT NULL := 디폴트 초기값
EX) CONST_NUM CONSTANT NUMBER(5) := 8;
참고 도서 : 전문가를 위한 오라클 PL/SQL 입문