블로그는 나의 힘!
[ Programing ]/Database2023. 5. 9. 13:33

MySQL의 프로시져는 return 이 없다.
코드를 구현하다보면 종료가 필요하기 마련인데 LEAVE 를 이용하면 return 과 비슷한 기능을 보여준다.
프로시저 시작하는 BEGIN 앞에 [BLOCK 이름] : 넣어주면 LEAVE [BLOCK이름]; 사용하여 종료할 수 있다.



DELIMITER $$
CREATE PROCEDURE sp_procedure_ex( IN vDoc VARCHAR(13), IN vSequenceID VARCHAR(256) )
BEGIN

     DECLARE iResult INT DEFAULT(0);
     DECLARE iSQLDoc VARCHAR(13);
PROC_RETURN :
BEGIN
     -- BLOCK NAME 설정 (RETURN  유사 기능 처리. LEAVE  -> BREAK  비슷)

     IF NOT CHAR_LENGTH(vDoc) = 13 THEN     -- iDoc의 길이가 13 이지 않으면 반환
          SET iResult = 99999;
          LEAVE PROC_RETURN;
     END IF;
    
     SELECT doc INTO iSQLDoc FROM docTBL WHERE doc = vDoc
     SET @SQL_Query = CONCAT('INSERT INTO sequenceTBL VALUES("', iSQLDoc, '", "', vDoc, '") ');
     PREPARE curQuery FROM @SQL_Query;
     EXECUTE curQuery;
     DEALLOCATE PREPARE curQuery;

     SELECT 0;
END PROC_RETURN;     -- BLOCK NAME 설정 해제. LEAVE PROC_BODY; 이면 여기 이후로 실행.
     IF 0 <> iResult THEN
          SELECT iResult;

     ELSE
          SELECT 0;
     END IF;
END$$
DELIMITER ;




참고 : 
https://artiiicy.tistory.com/15

 

PROCEDURE (프로시져) 도중에 중단하기 (return 0; 사용하기)

프로시져의 조건문에서 프로시져를 미리 마치는 경우 (예외처리가 되는 경우)를 만나게 되면 뒤의 나머지 코드들을 실행하지 않고 곧바로 종료분기를 하고 싶은 경우가 있습니다 즉, C, C++ 등의

artiiicy.tistory.com


https://stormpy.tistory.com/93

 

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

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

stormpy.tistory.com

 
 

Posted by Mister_Q