Partilhar via


ERROR_NUMBER (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 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)

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)