ERROR_MESSAGE (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureAzure SQL Managed InstanceAzure Synapse AnalyticsEndpoint de análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de dados SQL no Microsoft Fabric

Esta função retorna o texto da mensagem do erro que causou o bloco CATCH de um TRY... CATCH construir para executar.

Transact-SQL convenções de sintaxe

Sintaxe

ERROR_MESSAGE ( )   

Tipos de devolução

Nvarchar(4000)

Valor de retorno

Quando chamado em um bloco CATCH, ERROR_MESSAGE retorna o texto completo da mensagem de erro que causou a execução do CATCH bloco. O texto inclui os valores fornecidos para quaisquer parâmetros substituíveis - por exemplo, comprimentos, nomes de objetos ou tempos.

ERROR_MESSAGE retorna NULL quando chamado fora do escopo de um bloco CATCH.

Observações

ERROR_MESSAGE suporta chamadas em qualquer lugar dentro do escopo de um bloco CATCH.

ERROR_MESSAGE Retorna uma mensagem de erro relevante, independentemente de quantas vezes ela é executada ou onde ela é executada dentro do escopo do CATCH bloco. Isso contrasta com uma função como @@ERROR, que só retorna um número de erro na instrução imediatamente após a que causa um erro.

Em blocos aninhados CATCH , ERROR_MESSAGE retorna a mensagem de erro específica para o escopo do bloco que fez referência a CATCH esse CATCH bloco. Por exemplo, o CATCH bloco de um TRY externo... A construção CATCH pode ter uma construção interna TRY...CATCH . Dentro desse bloco interno CATCH , ERROR_MESSAGE retorna a mensagem do erro que invocou o bloco interno CATCH . Se ERROR_MESSAGE for executado no bloco externo CATCH , ele retornará a mensagem do erro que invocou esse bloco externo CATCH .

Exemplos

Um. Usando ERROR_MESSAGE em um bloco CATCH

Este exemplo mostra uma SELECT instrução que gera um erro de divisão por zero. O CATCH bloco retorna a mensagem de erro.

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.

-----------

(0 row(s) affected)

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

(1 row(s) affected)

B. Usando ERROR_MESSAGE em um bloco CATCH com outras ferramentas de tratamento de erros

Este exemplo mostra uma SELECT instrução que gera um erro de divisão por zero. Junto com a mensagem de erro, o CATCH bloco retorna informações sobre esse erro.

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.

-----------

(0 row(s) affected)

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

(1 row(s) affected)