SQL2012 새로운 기능 중 하나인 에러 예외 처리가 아닌가 싶다. 그동안 catch 구문에서 에러를 받아서 어플리케이션에 에러 정보를 전달하고자 할때 얼마나 불편했는가~ 그동안 RAISERROR를 이용하여 에러 정보를 반환했었는데 앞으로 그럴필요가 없어졌다.
SET NOCOUNT ON -- # 1. RAISERROR 예외 발생시킬 때 BEGIN TRY SELECT 1/0 END TRY BEGIN CATCH DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int SELECT @ErrMsg = ERROR_MESSAGE(), @ErrSeverity = ERROR_SEVERITY() RAISERROR(@ErrMsg, @ErrSeverity, 1) END CATCH GO --메시지 50000, 수준 16, 상태 1, 줄 10 --0으로 나누기 오류가 발생했습니다. -- # 2. THROW 파라메터가 없는 경우 BEGIN TRY SELECT 1/0 END TRY BEGIN CATCH DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int SELECT @ErrMsg = ERROR_MESSAGE(), @ErrSeverity = ERROR_SEVERITY(); THROW END CATCH GO --메시지 8134, 수준 16, 상태 1, 줄 8 --0으로 나누기 오류가 발생했습니다. -- # 3. THROW 파라메터가 있는 경우 BEGIN TRY SELECT 1/0 END TRY BEGIN CATCH THROW 51000, '내가 정의한 에러양', 1; END CATCH GO --메시지 51000, 수준 16, 상태 1, 줄 6 --내가 정의한 에러양 -- # 4. TRY문 안에 예외 처리 BEGIN TRY THROW 51000, '나 에러야...', 1; SELECT 1/0 END TRY BEGIN CATCH THROW; END CATCH GO --메시지 51000, 수준 16, 상태 1, 줄 2 --나 에러야...
'SQL Server 2012' 카테고리의 다른 글
SQL2012 lock page in memory 설정 방법 변경 (0) | 2012.05.04 |
---|---|
SQL2012 시작 매개변수 지정 (0) | 2012.05.04 |
진단 분석 저장프로시져 sp_server_diagnostics (0) | 2012.04.24 |
alt+f1으로 스키마 있는 객체 정보 보기 오류 해결되었군요. (0) | 2012.04.04 |
결과창 보기 단축키 다시 사용하기~~ CTRL+R (2) | 2012.03.29 |