ERROR_NUMBER(Transact-SQL)ERROR_NUMBER (Transact-SQL)

적용 대상:Applies to: 예SQL ServerSQL Server(지원되는 모든 버전)yesSQL ServerSQL Server (all supported versions) 예Azure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database 예Azure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance 예Azure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics 예병렬 데이터 웨어하우스Parallel Data Warehouseyes병렬 데이터 웨어하우스Parallel Data Warehouse적용 대상:Applies to: 예SQL ServerSQL Server(지원되는 모든 버전)yesSQL ServerSQL Server (all supported versions) 예Azure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database 예Azure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance 예Azure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics 예병렬 데이터 웨어하우스Parallel Data Warehouseyes병렬 데이터 웨어하우스Parallel Data Warehouse

이 함수는 TRY...CATCH 구문의 CATCH 블록을 실행하게 한 오류의 오류 번호를 반환합니다.This function returns the error number of the error that caused the CATCH block of a TRY...CATCH construct to execute.

항목 링크 아이콘 Transact-SQL 구문 표기 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax

ERROR_NUMBER ( )  

注意

SQL Server 2014 이전 버전의 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조하세요.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

반환 형식Return Types

intint

Return ValueReturn Value

CATCH 블록에서 호출되면 ERROR_NUMBER는 CATCH 블록을 실행시킨 오류의 오류 번호를 반환합니다.When called in a CATCH block, ERROR_NUMBER returns the error number of the error that caused the CATCH block to run.

ERROR_NUMBER는 CATCH 블록 범위 밖에서 호출된 경우 NULL을 반환합니다.ERROR_NUMBER returns NULL when called outside the scope of a CATCH block.

설명Remarks

ERROR_NUMBER는 CATCH 블록 범위 내의 어떤 위치에서나 호출을 지원합니다.ERROR_NUMBER supports calls anywhere within the scope of a CATCH block.

ERROR_NUMBERCATCH 블록의 범위 내에서 실행되는 경우 실행 횟수 또는 실행 위치에 관계 없이 관련 오류 번호를 반환합니다.ERROR_NUMBER returns a relevant error number regardless of how many times it runs, or where it runs within the scope of the CATCH block. 이것은 오류가 발생한 명령문 바로 다음 명령문에 오류 번호만 반환하는 @@ERROR 같은 함수와 대조적입니다.This contrasts with a function like @@ERROR, which only returns an error number in the statement immediately following the one that causes an error.

중첩된 CATCH 블록에서 ERROR_NUMBER는 해당 CATCH 블록을 참조한 CATCH 블록의 범위에 관련된 오류를 반환합니다.In a nested CATCH block, ERROR_NUMBER returns the error number specific to the scope of the CATCH block that referenced that CATCH block. 예를 들어 외부 TRY...CATCH 구문의 CATCH 블록에는 내부 TRY...CATCH 구문이 있을 수 있습니다.For example, the CATCH block of an outer TRY...CATCH construct could have an inner TRY...CATCH construct. 해당 내부 CATCH 블록 내에서 ERROR_NUMBER는 내부 CATCH 블록을 호출한 오류의 번호를 반환합니다.Inside that inner CATCH block, ERROR_NUMBER returns the number of the error that invoked the inner CATCH block. ERROR_NUMBER가 외부 CATCH 블록에서 실행되는 경우 해당 외부 CATCH 블록을 호출한 오류의 번호를 반환합니다.If ERROR_NUMBER runs in the outer CATCH block, it returns the number of the error that invoked that outer CATCH block.

예제Examples

A.A. CATCH 블록에서 ERROR_NUMBER 사용Using ERROR_NUMBER in a CATCH block

이 예에서는 0으로 나누기 오류를 일으키는 SELECT 문을 보여 줍니다.This example shows a SELECT statement that generates a divide-by-zero error. CATCH 블록은 오류 번호를 반환합니다.The CATCH block returns the error number.

BEGIN TRY  
    -- Generate a divide-by-zero error.  
    SELECT 1/0;  
END TRY  
BEGIN CATCH  
    SELECT ERROR_NUMBER() AS ErrorNumber;  
END CATCH;  
GO  

결과 집합은 다음과 같습니다.Here is the result set.

-----------

(0 row(s) affected)

ErrorNumber
-----------
8134

(1 row(s) affected)

B.B. CATCH 블록에서 다른 오류 처리 도구와 함께 ERROR_NUMBER 사용Using ERROR_NUMBER in a CATCH block with other error-handling tools

이 예에서는 0으로 나누기 오류를 일으키는 SELECT 문을 보여 줍니다.This example shows a SELECT statement that generates a divide-by-zero error. 오류 번호와 함께 CATCH 블록은 해당 오류에 대한 정보를 반환합니다.Along with the error number, the CATCH block returns information about that error.

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  

결과 집합은 다음과 같습니다.Here is the result set.

-----------

(0 row(s) affected)

ErrorNumber ErrorSeverity ErrorState  ErrorProcedure   ErrorLine  ErrorMessage
----------- ------------- ----------- ---------------  ---------- ----------------------------------
8134        16            1           NULL             4          Divide by zero error encountered.

(1 row(s) affected)

참고 항목See Also

sys.messages(Transact-SQL) sys.messages (Transact-SQL)
TRY...CATCH(Transact-SQL) TRY...CATCH (Transact-SQL)
ERROR_LINE(Transact-SQL) ERROR_LINE (Transact-SQL)
ERROR_MESSAGE(Transact-SQL) ERROR_MESSAGE (Transact-SQL)
ERROR_PROCEDURE(Transact-SQL) ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY(Transact-SQL) ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL) ERROR_STATE (Transact-SQL)
RAISERROR(Transact-SQL) RAISERROR (Transact-SQL)
@@ERROR(Transact-SQL) @@ERROR (Transact-SQL)
오류 및 이벤트 참조(데이터베이스 엔진)Errors and Events Reference (Database Engine)