Partilhar via


ERROR_LINE (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Essa função retorna o número de linha da ocorrência de um erro que fez com que o bloco CATCH de um constructo TRY...CATCH fosse executado.

Convenções de sintaxe de Transact-SQL

Sintaxe

ERROR_LINE ( )

Tipo de retorno

int

Valor retornado

Quando chamado em um bloco CATCH, ERROR_LINE retorna

  • o número de linha em que o erro ocorreu
  • o número de linha em uma rotina se o erro ocorreu dentro de um procedimento armazenado ou gatilho
  • NULL, se chamado fora do escopo de um bloco CATCH.

Comentários

Uma chamada a ERROR_LINE pode ocorrer em qualquer lugar dentro do escopo de um bloco CATCH.

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

Em blocos CATCH aninhados, ERROR_LINE retorna o número de linha do erro específico ao escopo do bloco CATCH no qual ele é referenciado. Por exemplo, o bloco CATCH de um constructo TRY...CATCH poderia ter um constructo TRY...CATCH aninhado. Dentro do bloco CATCH aninhado, ERROR_LINE retorna o número de linha do erro que invocou o bloco CATCH aninhado. Se ERROR_LINE for executado em um bloco CATCH externo, ele retornará o número de linha do erro que invocou aquele bloco CATCH específico.

Exemplos

a. Usando ERROR_LINE em um bloco CATCH

Este exemplo de código a seguir mostra uma instrução SELECT que gera um erro de divisão por zero. ERROR_LINE retorna o número de linha em que 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. Usando ERROR_LINE em um bloco CATCH com um procedimento armazenado

Este exemplo mostra um procedimento armazenado que gera um erro de divisão por zero. ERROR_LINE retorna o número de linha em que 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. Usando ERROR_LINE em um bloco CATCH com outras ferramentas de tratamento de erros

Este exemplo de código a seguir mostra uma instrução SELECT que gera um erro de divisão por zero. ERROR_LINE retorna o número de linha em que ocorreu o erro e informações sobre o erro propriamente dito.

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  

Consulte Também

TRY...CATCH (Transact-SQL)
sys.messages (Transact-SQL)
ERROR_NUMBER (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)