본문 바로가기

프로그래밍&IT/MySQL, Oracle, DB 공통

PL/SQL 블록 구조

이번 프로젝트에 투입되면서

오라클 특히 프로시저 부분을 다시 만지게 되었다.

 

Stored Procedure

자주 실행해야 하는 업무 흐름을 미리 Database에 저장해 두고 필요할 때마다 호출해 실행

<예전(한 10년전?)에 들었을 때는,

속도나 관리쪽 측면에서 프로시저 기반으로 시스템을  구축한다고 들었는데

요즘은 다르다고 들은 것 같다...>

기본적인 Procedure의 block 구조

CREATE [OR REPLACE] PROCEDURE 프로시저_이름
(
    변수 1 [MODE (IN/OUT) ] data-type 1 ,
    ...
    변수 n [MODE (IN/OUT) ] data-type n
)
IS
	[사용할 변수 선언부]
BEGIN
	로직 처리/실행
[EXCEPTION]
	[예외 처리부]
END;

1. CREATE OR REPLACE PROCEDURE 프로시져_이름

- 프로시저 선언부

보통은 [OR REPLACE] 부분을 붙이고 한다.

 

2. 프로시저의 [IN / OUT] 변수 선언

프로시저의 Input / Output 변수의 선언.

Input이면 프로시저 호출 시 들어오는 값의 변수.

Output이면 프로시저 수행 후 반환되는 값의 변수

 

3 로직 처리할 때 사용할 변수 선언부

특정 테이블의 row count를 저장하거나 할 때 사용할

지역변수 선언 부분.

 

4. BEGIN ~ END;

실제로 수행할 로직

 

5. [EXCEPTION] : 예외처리 부분