기본적이고 유용한 T-SQL (2) - TRY CATCH, ERROR 함수
에러 핸들링(Error Handlig )
SQL Server의 Try Catch 에 대한 내용
--실행문
END TRY
BEGIN CATCH
SELECT @Err_Number=ISNULL(error_number(),0)
,@Err_Message=ISNULL(error_message(),'NULL Message')
,@Err_Severity=ISNULL(error_severity(),0)
,@Err_State=ISNULL(error_state(),1)
,@Err_Line=ISNULL(error_line(),'NULL Message')
,@Err_Procedure=ISNULL(error_message(),'')
,@UserName=SUSER_NAME()
,@HostName=HOST_NAME()
,@Time_Stamo=GETDATE()
-- ERROR Logging
END CATCH
AdventureWorks 데이터베이스의 에러 핸들링 구조
1. dbo.ErrorLog 테이블 생성
2. dbo.uspLogError 로그 저장 프로시저 생성(dbo.ErrorLog 테이블에 위에 관련된 값 이용 INSERT)
3. 각 저장 프로시저의 CATCH 문에서 dbo.uspLogError 사용
BEGIN CATCH
-- Rollback any active or uncommittable transactions before
-- inserting information in the ErrorLog
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
EXECUTE [dbo].[uspLogError];
END CATCH;