ERROR_MESSAGE(Transact-SQL)ERROR_MESSAGE (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 message text 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_MESSAGE ( )   

注意

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

반환 형식Return Types

nvarchar(4000)nvarchar(4000)

반환 값Return Value

CATCH 블록에서 호출된 경우 ERROR_MESSAGECATCH 블록을 실행시키는 오류 메시지의 전체 텍스트를 반환합니다.When called in a CATCH block, ERROR_MESSAGE returns the complete text of the error message that caused the CATCH block to run. 이 텍스트는 대체 가능한 매개 변수(예를 들어 길이, 개체 이름 또는 시간)에 제공된 값을 포함합니다.The text includes the values supplied for any substitutable parameters - for example, lengths, object names, or times.

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

설명Remarks

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

ERROR_MESSAGECATCH 블록의 범위 내에서 실행되는 경우 실행 횟수 또는 실행 위치에 관계 없이 관련 오류 메시지를 반환합니다.ERROR_MESSAGE returns a relevant error message 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_MESSAGE는 해당 CATCH 블록을 참조한 CATCH 블록의 범위에 관련된 오류 메시지를 반환합니다.In nested CATCH blocks, ERROR_MESSAGE returns the error message 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_MESSAGE는 내부 CATCH 블록을 호출한 오류에서 메시지를 반환합니다.Inside that inner CATCH block, ERROR_MESSAGE returns the message from the error that invoked the inner CATCH block. ERROR_MESSAGE가 외부 CATCH 블록에서 실행되는 경우 해당 외부 CATCH 블록을 호출한 오류에서 메시지를 반환합니다.If ERROR_MESSAGE runs in the outer CATCH block, it returns the message from the error that invoked that outer CATCH block.

예제Examples

A.A. CATCH 블록에서 ERROR_MESSAGE 사용Using ERROR_MESSAGE 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 message.

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

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

-----------

(0 row(s) affected)

ErrorMessage
----------------------------------
Divide by zero error encountered.

(1 row(s) affected)

B.B. 다른 오류 처리 도구로 CATCH 블록에서 ERROR_MESSAGE 사용Using ERROR_MESSAGE 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 message, 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)