다음을 통해 공유


ERROR_MESSAGE(Transact-SQL)

TRY...CATCH 구문의 CATCH 블록을 실행시키는 오류의 메시지 텍스트를 반환합니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

ERROR_MESSAGE ( )

반환 형식

nvarchar(2048)

반환 값

CATCH 블록에서 호출된 경우 CATCH 블록을 실행시키는 오류 메시지의 전체 텍스트를 반환합니다. 이 텍스트는 길이, 개체 이름 또는 시간과 같은 대체 가능한 매개 변수에 제공된 값을 포함합니다.

CATCH 블록 범위 외부에서 호출된 경우 NULL을 반환합니다.

주의

ERROR_MESSAGE는 CATCH 블록 범위 내의 아무 위치에서나 호출할 수 있습니다.

ERROR_MESSAGE는 CATCH 블록 범위 내에서 실행 횟수 또는 실행 위치에 상관없이 오류 메시지를 반환합니다. 이 함수는 오류를 발생시킨 문 바로 뒤에 나오는 문이나 CATCH 블록의 첫 번째 문에 나오는 오류 번호만 반환하는 @@ERROR와 같은 함수와는 대조됩니다.

중첩된 CATCH 블록에서 ERROR_MESSAGE는 참조하는 CATCH 블록의 범위에 한정된 오류 메시지를 반환합니다. 예를 들어 외부 TRY...CATCH 구문의 CATCH 블록에는 중첩된 TRY...CATCH 구문이 있을 수 있습니다. 중첩된 CATCH 블록에서 ERROR_MESSAGE는 중첩된 CATCH 블록을 호출한 오류 메시지를 반환합니다. ERROR_MESSAGE가 외부 CATCH 블록에서 실행되는 경우 해당 CATCH 블록을 호출한 오류 메시지를 반환합니다.

1. CATCH 블록에서 ERROR_MESSAGE 사용

다음 코드 예에서는 0으로 나누기 오류를 일으키는 SELECT 문을 보여 줍니다. 오류 메시지가 반환됩니다.

USE AdventureWorks;
GO

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

2. 다른 오류 처리 도구로 CATCH 블록에서 ERROR_MESSAGE 사용

다음 코드 예에서는 0으로 나누기 오류를 일으키는 SELECT 문을 보여 줍니다. 오류 메시지와 함께 오류와 관련된 정보가 반환됩니다.

USE AdventureWorks;
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