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
반응형
'DB > MySQL' 카테고리의 다른 글
[MySQL] STRCMP - 문자열 비교 (0) | 2021.05.03 |
---|---|
[MySQL] REPLACE 문자열 일괄 변경 (0) | 2021.05.03 |
[MySQL] LENGTH, CHAR_LENGTH 문자열 길이 확인 (0) | 2021.04.27 |
[MySQL] REGEXP_REPLACE 한글, 영문, 특수문자, 숫자 제거 (0) | 2021.04.27 |
[MySQL] CHECK문을 이용한 제약 조건 설정 (0) | 2021.04.23 |