DB/MySQL

[MySQL] LEAVE , 프로시저 중에 중단하기

야곰야곰+책벌레 2021. 4. 27. 17:25
728x90
반응형

프로시저를 진행 중에 조건을 만족하지 않을 경우 실행을 중단하고 싶은 경우가 있다. 프로시저는 함수처럼 RETURN이 없어서 IF ~ END IF로 조건문으로 감싸서 해결하였는데 LEAVE를 사용하면 쉽게 해결할 수 있다.

 

프로시저를 시작하는 BEGIN 앞에 BLOCK의 이름을 넣어주면 LEAVE [BLOCK이름]을 사용하여 종료할 수 있다.

DELIMITER $$
CREATE PROCEDURE SP_insert_block(
	IN mcdomain VARCHAR(13),
    IN seqblkID VARCHAR(256)
)
PROC_BODY : BEGIN -- BLOCK NAME 설정
	DECLARE sqlmcdomain VARCHAR(13);
    
    IF NOT CHAR_LENGTH(mcdomain) = 13 THEN -- mcdomain의 길이가 13 이지 않으면 반환
    	LEAVE PROC_BODY;
    END IF;
    
    SELECT mcdomain INTO sqlmcdomain FROM mcdomaintbl WHERE mcdomain = mcdomain; 
    SET @sqlQuery = CONCAT('INSERT INTO seqblktbl VALUES("', sqlmcdomain, '","', seqblkID, '") ');
    PREPARE myQuery FROM @sqlQuery;
    EXECUTE myQuery;
    DEALLOCATE PREPARE myQuery;
END$$
DELIMITER ;

PROC_BODY라는 이름을 지어준 후, LEAVE PROC_BODY로 프로시저를 탈출한다.

728x90
반응형