DB 이야기/sqld

오라클 pl/sql 1. pl/sql이란?

김푸른초푸른 2021. 6. 2. 23:29

[특 징]

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 입문