Partilhar via


ERROR_MESSAGE (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade 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)

Ver também

sys.messages (Transact-SQL)
TENTE... CAPTURAR (Transact-SQL)
LINHA_ERRO (Transact-SQL)
MENSAGEM_DE_ERRO (Transact-SQL)
PROCEDIMENTO_ERRO (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
Referência de erros e eventos (Mecanismo de Banco de Dados)