본문 바로가기

잡다한 개발잡담

프로시저의 장단점

 

개발을 하다가 여러 번의 쿼리가 필요한 로직이 있었는데 스토어드 프로시저로 한번 짜보았습니다.

프로시저의 장점은 아무래도 DB에서 모든 로직을 처리하기 때문에 빠른 처리 속도를 보여주는 것이죠

또한 DB에 업데이트만 해주면 바로 서버에 반영되는 것도 좋은 장점입니다. (운영관점에서)

그렇지만 과도한 트래픽이 발생한다면 트래픽의 부하를 DB에서 다 받기 때문에 분산해주지 못한다는 단점과 

재사용성의 문제점 등을 단점으로 들 수 있겠습니다.

DELIMITER $$
CREATE PROCEDURE student_register
(IN IN_STUNO INT(11), IN IN_STUID VARCHAR(45), IN IN_STUPW VARCHAR(45),
IN IN_STUNAME VARCHAR(45), IN IN_STUGRADE VARCHAR(45), IN_STUDEPTNO VARCHAR(45))
BEGIN
DECLARE STU_COUNT INT(11);
        DECLARE RESULT VARCHAR(10) DEFAULT '성공';
        SET STU_COUNT = (SELECT COUNT(STU_NO) FROM student_tb WHERE STU_NO=IN_STUNO);

        IF STU_COUNT != 0
        THEN SET RESULT = '중복';
        END IF;
        
        IF RESULT = '성공' THEN 
INSERT INTO LOTTE.STUDENT_TB 
            VALUES(IN_STUNO, IN_STUID, IN_STUPW, IN_STUNAME, IN_STUGRADE, IN_STUDEPTNO);
        END IF;
        
        SELECT RESULT;
END;

CREATE PROCEDURE로 프로시저를 생성하고 BEGIN~END 사이가 처리 구간입니다.

변수는 DECLARE에서만 선언할 수 있고 SET을 통해 변수 명을 설정할 수 있습니다.