DB/SQL

[세무민의 코딩일기] mysql에서 Procedure 사용하기

세기루민 2022. 2. 3. 22:55
728x90

이번 포스팅에서는 Mysql에서 사용하는 프로시저라는 것에 대해 알아보도록 하겠습니다. 

 

스토어드 프로시저

 

우선 Mysql에서는 스토어드 프로시저라고 합니다. 

"쿼리문의 집합이자 동작을 일괄로 처리할 수 있도록 사용된다."

스토어드 프로시저란 Mysql 내부에서 프로그래밍이 가능하도록 제공해주는 것이라고 생각하면 된다. 

일반 쿼리를 모듈화하여 호출하는 방식으로 이용하며 이는 편리성을 제공해줍니다.

 

프로시저의 장점 및 단점

[장점]

1. 다양한 쿼리를 모듈화 가능

   -> 1개의 프로시저로 N개의 쿼리를 수행 가능하다.

2. 처리 시간이 단축된다

   -> 구문 분석과 코드 변환에 필요한 시간들을 미리 하기 때문이다. 

3. SQL 문장과 호스팅 언어의 분리로 인하여 프로시저 보수가 편리함

 

[단점]

1. 재사용성이 낮음

   -> DB의 버전 별 구문 규칙과 호환성이 다르기 때문이다. 

2. 외부 프로젝트의 경우 비효율적 

   -> 변경에 따라 장애 발생율이 높으며 프로시저로 인해 유지보수 시간이 올라감 

 

프로시저 만들어보기

프로시저의 기본 형식은 아래와 같다. 

/**
* 프로시저 생성하기 
*/
DELIMITER $$
CREATE PROCEDURE [스토어 프로시저 이름] (
    [IN 파라미터]
    [OUT 파라미터]
)
BEGIN
    [SQL 프로그래밍]
END $$ 
DELIMITER;

/**
* 프로시저 호출하기
*/
CALL [프로시저명]

스토어드 프로시저는 위와 같이 작성하면 된다. 

예시로 내가 만든 프로시저가 있는데 아래와 같다.

NOW_DATE라는 스토어드 프로시저를 만들었고 해당 프로시저의 역할은 날짜를 추출해주는 프로시저이다. 

프로시저를 호출하면 아래와 같은 결과를 받을 수 있다. 

 

마무리

이번 포스팅에서는 스토어드 프로시저에 대해서 알아봤다. 

실제 나는 회사에서 오라클 프로시저를 개발한 경험이 있는데 프로시저라는게 나쁜건 아니라는 생각이 들지만 

때로는 협업이나 유지보수 하는 과정에서 로직 분석하는 시간이 많이 드는게 조금 아쉽다. 

따라서 프로시저를 만들 때는 굳이 프로시저가 필요없는 경우라면 안만드는 걸 추천한다.


다음 포스팅에서는 프로시저를 좀 더 세부적으로 다뤄보도록 하겠습니다.

 

728x90