Pay it Forward

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

DB/MYSQL

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

minjoony 2020. 2. 25. 16:40
728x90

프로시져의 조건문에서 프로시져를 미리 마치는 경우 (예외처리가 되는 경우)를 만나게 되면

 

뒤의 나머지 코드들을 실행하지 않고 곧바로 종료분기를 하고 싶은 경우가 있습니다

 

즉, C, C++ 등의 언어에서  return 0;  의 역할을 하는 코드를 사용하고 싶은 경우입니다

 

 

MYSQL에서는 이러한 역할을 블록(block)의 개념으로 구현할 수 있습니다

 

 BEGIN 과  END  로 블록을 지정하고 이 블록 내에서  leave <block 이름>  과 같이 코드를 작성하면

 

종료분기와 같은 기능을 합니다.

 

다음은 예제 코드입니다

 

proc_body: BEGIN
DECLARE result INT default 0;

SET result = (SELECT userIdx From User WHERE userName = 'artiiicy');

IF result > 0 THEN
	SELECT 'yes';
    	leave proc_body;

UPDATE User SET userName = 'artiiicy' WHERE userIdx = result;

END

위의 코드에서  proc_body  라는 블록내에 코드들이 존재합니다.

 

User Table에 artiiicy라는 유저가 있으면 그 유저의 userIdx를 result에 저장합니다

 

만약 result에 값이 있다면, 즉 artiiicy라는 유저가 있다면 'yes'를 출력하고 블록을 빠져나옵니다

 

따라서 뒤의  UPDATE문  은 실행하지 않고 프로시져가 종료됩니다.

728x90
Comments