ERROR_NUMBER(Transact-SQL)
TRY...CATCH 구문의 CATCH 블록을 실행시킨 오류의 오류 번호를 반환합니다.
구문
ERROR_NUMBER ( )
반환 형식
int
반환 값
CATCH 블록에서 호출되면 CATCH 블록을 실행시킨 오류 메시지의 오류 번호를 반환합니다.
CATCH 블록 범위 외부에서 호출된 경우 NULL을 반환합니다.
주의
이 함수는 CATCH 블록 범위 내의 아무 위치에서나 호출할 수 있습니다.
ERROR_NUMBER는 실행 횟수나 CATCH 블록 범위 내의 실행 위치에 관계없이 오류 번호를 반환합니다. 이 함수는 오류를 발생시킨 문 바로 다음 문이나 CATCH 블록의 첫 번째 문에서만 오류 번호만 반환하는 @@ERROR와는 대조적입니다.
중첩된 CATCH 블록 중에서 ERROR_NUMBER는 참조하는 CATCH 블록 범위에 한정된 오류 번호를 반환합니다. 예를 들어 외부 TRY...CATCH 구문의 CATCH 블록에는 중첩된 TRY...CATCH 구문이 있을 수 있습니다. 중첩된 CATCH 블록 내에서 ERROR_NUMBER는 중첩된 CATCH 블록을 호출한 오류의 번호를 반환합니다. 외부 CATCH 블록에서 ERROR_NUMBER가 실행되는 경우에는 해당 CATCH 블록을 호출한 오류에서 번호를 반환합니다.
예
1. CATCH 블록에서 ERROR_NUMBER 사용
다음 코드 예에서는 0으로 나누기 오류를 생성하는 SELECT 문을 보여 줍니다. 오류 번호가 반환됩니다.
USE AdventureWorks2008R2;
GO
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() AS ErrorNumber;
END CATCH;
GO
2. CATCH 블록에서 다른 오류 처리 도구와 함께 ERROR_NUMBER 사용
다음 코드 예에서는 0으로 나누기 오류를 생성하는 SELECT 문을 보여 줍니다. 오류 번호와 함께 해당 오류와 관련된 정보가 반환됩니다.
USE AdventureWorks2008R2;
GO
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO
참고 항목