ERROR_NUMBER (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 devolve o número de erro do erro que causou o bloco CATCH de um TRY... CATCH para executar.

Transact-SQL convenções de sintaxe

Sintaxe

ERROR_NUMBER ( )  

Tipos de devolução

int

Valor de retorno

Quando chamado a um bloco CATCH, ERROR_NUMBER devolve o número de erro do erro que causou a execução do bloco CATCH.

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

Observações

ERROR_NUMBER suporta chamadas em qualquer lugar dentro do âmbito de um bloco CATCH.

ERROR_NUMBER devolve um número de erro relevante independentemente de quantas vezes seja executado, ou onde seja executado dentro do âmbito do CATCH bloco. Isto contrasta com uma função como @@ERROR, que só devolve um número de erro na instrução imediatamente após a que causa o erro.

Num bloco aninhado CATCH , ERROR_NUMBER devolve o número de erro específico do âmbito do CATCH bloco que referenciava esse CATCH bloco. Por exemplo, o bloco CATCH de um TRY exterior... A construção CATCH pode ter uma construção interior TRY...CATCH . Dentro desse bloco interior CATCH , ERROR_NUMBER devolve o número do erro que invocou o bloco interior CATCH . Se ERROR_NUMBER for executado no bloco exterior CATCH , devolve o número do erro que invocou esse bloco exterior CATCH .

Examples

A. Usar ERROR_NUMBER num bloco CATCH

Este exemplo mostra uma SELECT instrução que gera um erro de divisão por zero. O bloco CATCH devolve o número de erro.

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

Aqui está o conjunto de resultados.

-----------

(0 row(s) affected)

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

(1 row(s) affected)

B. Usar ERROR_NUMBER num bloco CATCH com outras ferramentas de gestão de erros

Este exemplo mostra uma SELECT instrução que gera um erro de divisão por zero. Juntamente com o número de erro, o bloco CATCH devolve 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)