ERROR_NUMBER (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise do SQL Warehouse no Microsoft Fabric

Essa função retorna o número 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_NUMBER ( )  

Tipos de retorno

int

Valor retornado

Quando chamado em um bloco CATCH, ERROR_NUMBER retorna o número do erro que fez com que o bloco CATCH fosse executado.

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

Comentários

ERROR_NUMBER dá suporte a chamadas em qualquer lugar dentro do escopo de um bloco CATCH.

ERROR_NUMBER retorna um número 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 um bloco CATCH aninhado, ERROR_NUMBER retorna o número do erro específico 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_NUMBER retorna o número do erro que invocou o bloco CATCH interno. Se ERROR_NUMBER é executado no bloco CATCH externo, ele retorna o número do erro que invocou esse bloco CATCH externo.

Exemplos

a. Usando ERROR_NUMBER 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 o número do erro.

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

Veja a seguir o conjunto de resultados.

-----------

(0 row(s) affected)

ErrorNumber
-----------
8134

(1 row(s) affected)

B. Usando ERROR_NUMBER 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 o número do 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  

Veja a seguir 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)

Confira 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)