본문 바로가기

Error Handling

(5)
[MySQL / Stored Procedure] 에러 핸들링 (5) SIGNAL [MySQL / Stored Procedure] 에러 핸들링 시리즈(1) DECLARE ... HANDLER(2) Error Logging(3) CONSTRAINT (上)(4) CONSTRAINT (下)(5) SIGNAL 1편 ~ 4편까지 SQLEXCEPTION 이 발생했을 때, 에러 또는 예외에 대한 SP 리턴 값을 지정하고 필요에 따라 로깅하는 방법을 소개해 드렸습니다. 이 글에서는 SQLEXCEPTION 이 발생하지 않는 예외 상황에서도, DECLARE ... HANDLER 를 사용하여 SP 리턴 값을 지정하고 로깅하는 방법을 소개합니다. 어떤 상황이 SQLEXCEPTION 이 없지만 예외로 처리해야하는 상황일까요? 대표적인 예로, 수정하거나 삭제하려는 Row 가 존재하지 않는 경우가 있습니다. 참..
[MySQL / Stored Procedure] 에러 핸들링 (4) CONSTRAINT (下) [MySQL / Stored Procedure] 에러 핸들링 시리즈(1) DECLARE ... HANDLER(2) Error Logging(3) CONSTRAINT (上)(4) CONSTRAINT (下)(5) SIGNAL학생이 강의를 수강하는 모델 테스트 DB와 테이블을 아래와 같이 생성합니다.123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566CREATE DATABASE exception_test DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci; USE exception..
[MySQL / Stored Procedure] 에러 핸들링 (3) CONSTRAINT (上) [MySQL / Stored Procedure] 에러 핸들링 시리즈(1) DECLARE ... HANDLER(2) Error Logging(3) CONSTRAINT (上)(4) CONSTRAINT (下)(5) SIGNAL 어떻게 에러 핸들링에 Constraint를 활용할 수 있나.. (예 : 학생이 강의를 수강하는 모델) 1. 학생이 강의를 수강 학생이 강의를 수강하려면 attending 테이블에 row를 한 개 insert 해 주면 됩니다. 이 때, 이미 수강한 과목인지.. 그리고 학생과 강의가 실제로 존재하는지 확인할 필요가 있습니다.어떻게 할까요? 그냥 `attending` 테이블에 insert 하면 됩니다. 이미 수강한 과목이라면 `attending` 테이블의 Primary Key 제약 조건에 위..
[MySQL / Stored Procedure] 에러 핸들링 (2) Error Logging [MySQL / Stored Procedure] 에러 핸들링 시리즈(1) DECLARE ... HANDLER(2) Error Logging(3) CONSTRAINT (上)(4) CONSTRAINT (下)(5) SIGNAL 아래와 같은 테이블을 만들고, Stored Procedure 실행 중에 SQL Exception 이 발생했을 때, 디버깅에 필요한 단서를 저장합니다.12345678910111213CREATE TABLE `error_log` ( `error_log_id` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '에러 로그 ID', `proc_name` VARCHAR(100) NOT NULL COMMENT '프로시저 이름', `proc_step` TI..
[MySQL / Stored Procedure] 에러 핸들링 (1) DECLARE ... HANDLER [MySQL / Stored Procedure] 에러 핸들링 시리즈 (1) DECLARE ... HANDLER(2) Error Logging(3) CONSTRAINT (上)(4) CONSTRAINT (下)(5) SIGNAL Stored Procedure가 실행되는 도중에 발생하는 에러는 DECLARE ... HANDLER 구문을 사용해서 처리할 수 있습니다. MS-SQL의 TRY ... CATCH 구문과 비교했을 때 아무런 부족함이 없다는 점... 칭찬해~ 기본 문법12345678910111213141516DECLARE handler_action HANDLER FOR condition_value [, condition_value] ... statement handler_action: CONTINUE | ..