반응형
TRY CATCH을 이용하여 오류를 처리해보자
BEGIN
SET NOCOUNT ON;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
BEGIN TRY
BEGIN TRAN
/* 쿼리 작업 */
SELECT '성공'
COMMIT TRAN;
END TRY
BEGIN CATCH
DECLARE @ErrorNumber INT
DECLARE @ErrorSeverity INT
DECLARE @ErrorState INT
DECLARE @ErrorProcedure NVARCHAR(MAX)
DECLARE @ErrorLine INT
DECLARE @ErrorMessage NVARCHAR(MAX)
SELECT @ErrorNumber = ERROR_NUMBER(), -- 오류 번호
@ErrorSeverity = ERROR_SEVERITY(), -- 오류 심각도
@ErrorState = ERROR_STATE(), -- 오류 상태 번호
@ErrorProcedure = ERROR_PROCEDURE(),-- 오류 발생 프로시저
@ErrorLine = ERROR_LINE(), -- 오류 발생 행 번호
@ErrorMessage = ERROR_MESSAGE(); -- 오류 메세지
SELECT '에러발생'
IF XACT_STATE() <> 0 ROLLBACK TRAN;
END CATCH
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
END
쿼리 실행 중 에러 없이 정상 실행시
TRY안에서 COMMIT TRAN과 함께 쿼리가 성공적으로 실행된다.
그러나 쿼리 실행 중 에러가 발생한다면,
CATCH로 빠지게 되고, 해당 에러를 파악 후 ROLLBACK TRAN으로 해당 쿼리를 롤백시킨다.
XACT_STATE()
1 : 활성상태의 커밋 가능한 트랜잭션 존재
-1 : 활성상태의 커밋 불가능한 트랜잭션 존재
0 : 비 활성 트랜잭션
에러 메세지 예)
반응형
'프로그래밍 > MSSQL 정리필요' 카테고리의 다른 글
[DB_MSSQL] PWDENCRYPT, PWDCOMPARE, HASHBYTES (암호화) (0) | 2017.08.25 |
---|---|
[DB_MSSQL] 월 말일 날짜 가져오기 (0) | 2017.05.08 |
[DB_MSSQL] 정규식을 사용하여 특수문자를 포함하고 있는 로우 출력 LIKE (0) | 2017.03.29 |
[DB_MSSQL] 실행 결과를 표 형태/텍스트로 표시, 파일로 저장해보자 (0) | 2017.02.23 |
[DB_MSSQL] 테이블 명세서 출력 쿼리 (0) | 2017.02.23 |