Partilhar via


ERROR_LINE (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Esta função devolve o número de linha de ocorrência de um erro que causou o bloco CATCH de um TRY... CATCH para executar.

Transact-SQL convenções de sintaxe

Sintaxe

ERROR_LINE ( )

Tipo de Retorno

int

Valor de retorno

Quando chamado num bloco CATCH, ERROR_LINE retorna

  • o número da linha onde ocorreu o erro
  • o número da linha numa rotina, se o erro ocorreu dentro de um procedimento armazenado ou disparador
  • NULL, se chamado fora do âmbito de um bloco CATCH.

Observações

Uma chamada para ERROR_LINE pode acontecer em qualquer lugar dentro do âmbito de um bloco CATCH.

ERROR_LINE devolve o número da linha em que o erro ocorreu. Isto acontece independentemente da localização da ERROR_LINE chamada dentro do âmbito do bloco CATCH, e independentemente do número de chamadas para ERROR_LINE. Isto contrasta com funções, como @@ERROR. @@ERROR devolve um número de erro na instrução imediatamente após a que causa o erro, ou na primeira instrução de um bloco CATCH.

Nos blocos CATCH aninhados, devolve ERROR_LINE o número da linha de erro específico ao âmbito do bloco CATCH em que está referenciado. Por exemplo, o bloco CATCH de um TRY... O construto CATCH poderia conter um TRY... aninhado... Construção CATCH. Dentro do bloco CATCH aninhado, ERROR_LINE devolve o número da linha do erro que invocou o bloco CATCH aninhado. Se ERROR_LINE for executado no bloco CATCH externo, devolve o número de linha do erro que invocou esse bloco CATCH específico.

Examples

A. Usar ERROR_LINE num bloco CATCH

Este exemplo de código mostra uma SELECT instrução que gera um erro de divisão por zero. ERROR_LINE devolve o número da linha onde ocorreu o erro.

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

B. Usar ERROR_LINE num bloco CATCH com um procedimento armazenado

Este exemplo mostra um procedimento armazenado que gera um erro de divisão por zero. ERROR_LINE devolve o número da linha onde ocorreu o erro.

-- Verify that the stored procedure does not already exist.  
IF OBJECT_ID ( 'usp_ExampleProc', 'P' ) IS NOT NULL   
    DROP PROCEDURE usp_ExampleProc;  
GO  
  
-- Create a stored procedure that  
-- generates a divide-by-zero error.  
CREATE PROCEDURE usp_ExampleProc  
AS  
    SELECT 1/0;  
GO  
  
BEGIN TRY  
    -- Execute the stored procedure inside the TRY block.  
    EXECUTE usp_ExampleProc;  
END TRY  
BEGIN CATCH  
    SELECT ERROR_LINE() AS ErrorLine;  
END CATCH;  
GO  

C. Usar ERROR_LINE num bloco CATCH com outras ferramentas de tratamento de erros

Este exemplo de código mostra uma SELECT instrução que gera um erro de divisão por zero. ERROR_LINE devolve o número da linha onde ocorreu o erro e informações relativas ao próprio 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  

Ver também

TENTE... CAPTURAR (Transact-SQL)
sys.messages (Transact-SQL)
ERROR_NUMBER (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)