티스토리 뷰
SQL Server 2012 T-SQL New Feature –THROW
이번 내용은 오류 처리에 대한 간단한 내용입니다. .NET 프로그래밍에서 에러 핸들링은 try catch 구문을 통해 작업을 하게 되며 class 등에서는 catch 문장에서 오류를 UI 단으로 아래와 같이 throw 시켜주게 됩니다.
try
{
}
catch (System.DivideByZeroException ex)
{
throw new System.Exception(ex.Message);
}
}
SQL Server 2005 버전부터 TRY, CATCH 문장을 지원해주고 있었는데 에러를 발생시키는 내용은 오류 메시지를 사전에 등록해두거나 아니면 사용자 지정 메시지를 RAISERROR 구문을 사용했었습니다.
SQL Server 2012 버전부터는 THROW 구문을 사용해야 하며 앞에서 살펴본 몇몇 기능들과 마찬가지로 .NET 프로그래밍과 거의 유사합니다.
THROW [ { error_number | @local_variable },
{ message | @local_variable },
{ state | @local_variable }
] [ ; ]
간단한 예제를 한번 살펴보도록 하겠습니다.
Deparment 테이블의 경우 Name에 고유인덱스가 걸려있어 아래와 같이 기존 부서 이름을 입력시는 오류가 발생하게 됩니다. CATCH 문장에서 THROW를 통해 응용 프로그램이나 호출하는 프로시저로 오류를 전달할 수 있습니다.
BEGIN TRY
INSERT [HumanResources].[Department] (Name, GroupName)
VALUES ('Engineering','Manufacturing')
END TRY
BEGIN CATCH
THROW;
END CATCH
--(0개 행이 영향을 받음)
--메시지 2601, 수준 14, 상태 1, 줄 3
--고유 인덱스 'AK_Department_Name'을(를) 포함하는 개체 'HumanResources.Department'에 중복 키 행을 삽입할 수 없습니다. 중복 키 값은 (Engineering)입니다.
물론 .NET 프로그래밍처럼 사용자 지정 오류메시지를 아래와 같이 THROW 시킬 수 있습니다.
BEGIN TRY
INSERT [HumanResources].[Department] (Name, GroupName)
VALUES ('Engineering','Manufacturing')
END TRY
BEGIN CATCH
THROW 50001,'부서 이름 중복',1;
END CATCH
--(0개 행이 영향을 받음)
--메시지 50001, 수준 16, 상태 1, 줄 7
--부서 이름 중복
THROW 구문 전에 오류로그 저장등을 위해 ERROR_NUMBER() 등을 사용할 수 있습니다.
BEGIN TRY
INSERT [HumanResources].[Department] (Name, GroupName)
VALUES ('Engineering','Manufacturing')
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER(), ERROR_PROCEDURE(), ERROR_MESSAGE();
THROW 50001,'부서 이름 중복',1;
END CATCH
THROW에 대한 자세한 내용은 아래 링크를 참조할 수 있습니다.
http://msdn.microsoft.com/ko-kr/library/ee677615.aspx
'SQL' 카테고리의 다른 글
SQL Server 2012의 FileTable (0) | 2012.05.09 |
---|---|
SQL Server Build number List (0) | 2012.05.04 |
SQL Server 2012 Update for Developers Training Workshop/TTT (0) | 2012.04.25 |
SQL Server 2012 T-SQL New Feature –LEAD, LAG (0) | 2012.04.18 |
SQL Server 2012 T-SQL New Feature –변환함수 (0) | 2012.04.11 |
- Total
- Today
- Yesterday
- SharePoint 2010
- Power BI 업데이트
- SharePoint Object Model
- SQL Azure
- Power BI Copilot
- 목표
- Cloud
- 정홍주
- Power BI Desktop Update
- Windows Azure Mobile Services
- Power BI Desktop
- Power BI Update
- SharePoint 2013
- Power BI
- Paginated Report
- Windows Azure
- 페이지를 매긴 보고서
- Windows Phone 7
- sharepoint
- Visual Studio 2010
- Windows Azure 업데이트
- 업데이트
- sql server 2012
- SharePoint Online
- 클라우드
- Microsoft Fabric
- Power BI Desktop 업데이트
- hongju
- copilot
- redJu
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |