Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 오류 처리용 핸들러 선언하는 방법 완벽 정리

오류가 발생했을 때 적절한 오류 메시지를 던지며 이를 체계적으로 처리하는 것은 매우 중요합니다. MySQL은 이러한 오류를 처리할 수 있도록 핸들러(handler) 기능을 제공하며, 아래 문법을 사용해 손쉽게 선언할 수 있습니다.

핸들러 선언 문법

DECLARE handler_action FOR condition_value statement;

위 문법에서 확인할 수 있듯이, 핸들러는 DECLARE HANDLER 문을 통해 선언합니다. 조건 값(condition_value)과 일치하는 조건이 발생하면 MySQL은 지정된 문(statement)을 실행한 뒤, handler_action에 따라 현재 코드 블록을 계속 실행하거나 종료합니다. 이 문법의 핵심 구성 요소는 다음 세 가지입니다.

1. handler_action (핸들러 동작)

핸들러 동작은 두 가지 유형이 있으며, 다음 값 중 하나를 가질 수 있습니다.

  • CONTINUE – 오류가 발생해도 해당 코드 블록의 실행을 계속 진행합니다.
  • EXIT – 오류가 발생하면 해당 코드 블록의 실행을 즉시 종료합니다.

2. condition_value (조건 값)

조건 값은 핸들러를 활성화시키는 특정 조건 또는 조건의 범주를 지정합니다. 다음 값 중 하나를 사용할 수 있습니다.

  • MySQL 오류 코드(ERROR CODE) – MySQL 고유의 숫자형 오류 코드를 지정할 수 있습니다.
  • SQLSTATE – 5자리 SQLSTATE 값을 지정할 수 있습니다.
  • SQLWARNING – 경고(warning)에 해당하는 모든 조건을 처리합니다.
  • NOT FOUND – 커서나 SELECT INTO 문에서 데이터를 찾지 못한 경우를 처리합니다.
  • SQLEXCEPTION – SQLWARNING과 NOT FOUND를 제외한 모든 예외를 처리합니다.

3. statement (실행 문)

statement는 단순히 하나의 문장일 수도 있고, BEGINEND 키워드로 감싼 복합문(compound statement)일 수도 있습니다. 복합문을 사용하면 여러 개의 처리 로직을 한 번에 실행할 수 있습니다.

실전 예제

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET got_error = 1;

위 예제의 핸들러는 SQLEXCEPTION, 즉 예외가 발생하면 got_error 변수의 값을 1로 설정한 후 실행을 계속 진행하라는 의미입니다. 이처럼 핸들러를 활용하면 저장 프로시저나 함수 내부에서 오류를 우아하게 처리하고, 프로그램이 비정상적으로 중단되는 상황을 효과적으로 방지할 수 있습니다.