스토어드 프로시저(stored procedure)는 데이터베이스에 대한 일련의 작업을 정리한 절차를 RDBMS에 저장한 것이다.
다음 코드 블록은 스토어드 프로시저를 생성하기 위한 문법을 정의한다.
DELIMITER &&
CREATE PROCEDURE 프로시저_이름([IN | OUT | INOUT 매개변수]) -- 헤더
BEGIN -- 바디
변수_선언
함수_실행을 위한 코드
END &&
DELIMITER ;
CALL 프로시저_이름();
DELIMITER
DELIMITER는 스토어드 프로시저 작성이 완료되지 않았는데도 SQL 문장이 실행되는 상황을 방지하기 위해 사용된다. 스토어드 프로시저 바디의 SQL 문장은
;기호로 끝맺어야 한다. DELIMITER 키워드로 구분자를&&로 변경해END &&에 도달해서야 프로시저 작성이 완료되었음을 알린다.
특징
- 프로시저는 삭제 후 재생성만 가능하다.
- RETURN 명령문을 사용할 수 없다.
- IN과 함께 정의된 매개변수는 입력 전용 매개변수다.
- OUT과 함께 정의된 매개변수는 출력 전용 매개변수다.
- INOUT과 함께 정의된 매개변수는 입출력 매개변수다.
장단점
-
장점 1: 제어 문장을 사용해 절차적 프로그래밍을 할 수 있다.
-
장점 2: 쉽게 재활용 할 수 있어 유지·보수가 용이하다.
-
장점 3: 여러 SQL 문장을 한 번의 호출로 실행할 수 있어 네트워크 트래픽이 감소한다.
-
장점 4: 스토어드 프로시저 실행 단위로 실행 권한을 부여할 수 있다.
-
단점 1: MySQL은 스토어드 프로시저를 호출할 때마다 코드를 파싱하므로 낮은 처리 성능을 보인다.
-
단점 2: 데이터베이스 제품에 따라 구문 규칙이 달라 낮은 호환성을 보인다.
-
단점 3: 비즈니스 로직이 포함되어 있어 관리 요소가 늘어난다.
참고 문헌
- Do it! MySQL로 배우는 SQL 입문