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