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
반응형