IT’s Ha

[MariaDB] 예외처리 본문

SQL/MariaDB

[MariaDB] 예외처리

Deleloper Ha 2023. 5. 9. 10:08
728x90
반응형

안녕하세요. 이번 포스팅은 MariaDB에서 예외처리 하는 방법을 공유하려고 합니다.

먼저, 예외 처리를 하기 위해 Handler를 선언 하여야 합니다. 

1. 예외처리

BEGIN
    #에러 선언
    DECLARE TEST_ERR CONDITION FOR SQLSTATE '99999';
    #변수 선언
    DECLARE ERR_SQL	LONGTEXT;
    DECLARE ERR_MESSAGE LOGTEXT;
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
   	BEGIN
    	GET DIAGNOSTICS CONDITION 1 ERR_SQL = MESSAGE_TEXT, ERR_NUMBER = RETURNED_SQLSTATE;
        SELECT 'ERR' AS ERR, ERR_NUMBER, ERR_SQL;
    END;
    
    #에러 처리
    SIGNAL TEST_ERR;
END;
  • TEST_ERR 라는 CONDITION을 생성합니다.
  • HANDLER 선언에서 EXIT는 에러가 발생 할 시 계속 동작하고, 만약 계속 프로시저 실행을 원할 경우에는 CONTINUE 옵션을 사용합니다. 
  • SQLEXCEPTION은 EXCEPTION이 발생되었을 때 실행 된다는 조건입니다. NOT FOUND 옵션 또는 SQLWARINING에 대한 옵션도 사용가능합니다. 
  • SIGNAL은 MSSQL의 RAISERROR와 동일 합니다. 

결과

결과는 아래와 같이 나타납니다.

2. 에러메세지 변경

BEGIN
    #변수 선언
    DECLARE ERR_SQL	LONGTEXT;
    DECLARE ERR_MESSAGE LOGTEXT;
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
   	BEGIN
    	GET DIAGNOSTICS CONDITION 1 ERR_SQL = MESSAGE_TEXT, ERR_NUMBER = RETURNED_SQLSTATE;
        SELECT 'ERR' AS ERR, ERR_NUMBER, ERR_SQL;
    END;
    
    #에러 처리
    SIGNAL SQLSTATE  '99998' SET MESSAGE_TEXT ='TEST' ,MYSQL_ERRNO = 5000;
END;

위와 같이 에러를 만들어 MESSAGE와 에러코드를 넣어서 출력도 가능합니다. 

결과

이번 포스팅은 MariaDB 예외처리였습니다. 궁금하신 내용이나 잘못된 내용은 댓글이나 메일로 부탁드리겠습니다. 감사합니다.

728x90
반응형
Comments