ERROR_MESSAGE (Transact-SQL)
Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Ponto de extremidade de SQL no Microsoft FabricWarehouse no Microsoft Fabric
Essa função retorna o texto da mensagem do erro que fez com que o bloco CATCH de um constructo TRY…CATCH fosse executado.
Convenções de sintaxe de Transact-SQL
Sintaxe
ERROR_MESSAGE ( )
Observação
Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.
Tipos de retorno
nvarchar(4000)
Valor Retornado
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. O texto inclui os valores fornecidos para qualquer parâmetro substituível, assim como comprimentos, nomes de objeto ou horas.
ERROR_MESSAGE
retorna NULL quando chamado fora do escopo de um bloco CATCH.
Comentários
ERROR_MESSAGE
dá suporte a chamadas em qualquer lugar dentro do escopo de um bloco CATCH.
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
. É 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.
Em blocos CATCH
aninhados, ERROR_MESSAGE
retorna a mensagem de erro específica do escopo do bloco CATCH
que referenciou esse bloco CATCH
. Por exemplo, o bloco CATCH
de um constructo TRY...CATCH externo poderia ter um constructo TRY...CATCH
interno. Dentro desse bloco CATCH
interno, ERROR_MESSAGE
retorna a mensagem do erro que invocou o bloco CATCH
interno. Se ERROR_MESSAGE
é executado no bloco CATCH
externo, ele retorna a mensagem do erro que invocou esse bloco CATCH
externo.
Exemplos
a. Usando ERROR_MESSAGE em um bloco CATCH
Este exemplo a seguir mostra uma instrução SELECT
que gera um erro de divisão por zero. O bloco CATCH
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
Este é 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 a seguir mostra uma instrução SELECT
que gera um erro de divisão por zero. Juntamente com a mensagem de erro, o bloco CATCH
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
Este é 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)
Consulte Também
sys.messages (Transact-SQL)
TRY...CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_PROCEDURE (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)
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de