정리노트

[SQL] DECLARE EXIT FOR SQLEXCEPTION

망고고래 2025. 1. 17. 17:20
begin
    -- 다른 변수들 declare

    declare exit handler for sqlexception
    BEGIN
        -- 오류발생시처리
        GET DIAGNOSTICS CONDITION 1
            @p1 = RETURNED_SQLSTATE,
            @p2 = MESSAGE_TEXT,
            @p3 = MYSQL_ERRNO,
            @p4 = MESSAGE_TEXT;
        SET result_message = CONCAT('FAIL: ', @p2);
        ROLLBACK;
    END;
   
   start transaction;

 

DECLARE EXIT HANDLER FOR SQLEXCEPTION

 

- EXIT: 프로시저 실행 강제 종료

 

GET DIAGNOSTICS CONDITION 1
    @p1 = RETURNED_SQLSTATE,
    @p2 = MESSAGE_TEXT,
    @p3 = MYSQL_ERRNO,
    @p4 = MESSAGE_TEXT;

- GET DIAGNOSTICS: 현재 실행 환경 정보를 가져옴. 여기서는 오류 정보

- CONDITION 1: 가장 최근에 발생한 오류 정보 조회

- RETURNED_SQLSTATE: SQLSTATE 코드(오류의 범주를 나타내는 표준화된 문자열)

- MESSAGE_TEXT: 오류 메시지의 텍스트

- MYSQL_ERRNO: MySQL에서 제공하는 오류 번호

- MESSAGE_TEXT: 오류 메시지 텍스트를 다시 저장