ERROR_MESSAGE (Transact-SQL)ERROR_MESSAGE (Transact-SQL)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure simSQL Data Warehouse do Azure simParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Essa função retorna o texto da mensagem do erro que fez com que o bloco CATCH de um constructo TRY…CATCH fosse executado.This function returns the message text of the error that caused the CATCH block of a TRY...CATCH construct to execute.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

ERROR_MESSAGE ( )   

Tipos de retornoReturn Types

nvarchar(4000)nvarchar(4000)

Valor retornadoReturn Value

Quando chamado em um bloco CATCH, ERROR_MESSAGE retorna o texto completo da mensagem do erro que fez com que o bloco CATCH fosse executado.When called in a CATCH block, ERROR_MESSAGE returns the complete text of the error message that caused the CATCH block to run. O texto inclui os valores fornecidos para qualquer parâmetro substituível, assim como comprimentos, nomes de objeto ou horas.The text includes the values supplied for any substitutable parameters - for example, lengths, object names, or times.

ERROR_MESSAGE retorna NULL quando chamado fora do escopo de um bloco CATCH.ERROR_MESSAGE returns NULL when called outside the scope of a CATCH block.

RemarksRemarks

ERROR_MESSAGE dá suporte a chamadas em qualquer lugar dentro do escopo de um bloco CATCH.ERROR_MESSAGE supports calls anywhere within the scope of a CATCH block.

ERROR_MESSAGE retorna uma mensagem de erro relevante, independentemente de quantas vezes ou de em que local ele é executado dentro do escopo do bloco CATCH.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. É diferente de uma função como @@ERROR, que retorna apenas um número de erro na instrução imediatamente após àquela que causa um erro.This contrasts with a function like @@ERROR, which only returns an error number in the statement immediately following the one that causes an error.

Em blocos CATCH aninhados, ERROR_MESSAGE retorna a mensagem de erro específica do escopo do bloco CATCH que referenciou esse bloco CATCH.In nested CATCH blocks, ERROR_MESSAGE returns the error message specific to the scope of the CATCH block that referenced that CATCH block. Por exemplo, o bloco CATCH de um constructo TRY...CATCH externo poderia ter um constructo TRY...CATCH interno.For example, the CATCH block of an outer TRY...CATCH construct could have an inner TRY...CATCH construct. Dentro desse bloco CATCH interno, ERROR_MESSAGE retorna a mensagem do erro que invocou o bloco CATCH interno.Inside that inner CATCH block, ERROR_MESSAGE returns the message from the error that invoked the inner CATCH block. Se ERROR_MESSAGE é executado no bloco CATCH externo, ele retorna a mensagem do erro que invocou esse bloco CATCH externo.If ERROR_MESSAGE runs in the outer CATCH block, it returns the message from the error that invoked that outer CATCH block.

ExemplosExamples

A.A. Usando ERROR_MESSAGE em um bloco CATCHUsing ERROR_MESSAGE in a CATCH block

Este exemplo a seguir mostra uma instrução SELECT que gera um erro de divisão por zero.This example shows a SELECT statement that generates a divide-by-zero error. O bloco CATCH retorna a mensagem de erro.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  

Aqui está o conjunto de resultados.Here is the result set.

-----------

(0 row(s) affected)

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

(1 row(s) affected)

B.B. Usando ERROR_MESSAGE em um bloco CATCH com outras ferramentas de tratamento de errosUsing ERROR_MESSAGE in a CATCH block with other error-handling tools

Este exemplo a seguir mostra uma instrução SELECT que gera um erro de divisão por zero.This example shows a SELECT statement that generates a divide-by-zero error. Juntamente com a mensagem de erro, o bloco CATCH retorna informações sobre esse erro.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  

Aqui está o conjunto de resultados.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)

Consulte TambémSee 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)
Referência de Erros e Eventos (Mecanismo de Banco de Dados)Errors and Events Reference (Database Engine)