ERROR_LINE (Transact-SQL)ERROR_LINE (Transact-SQL)

APLICA-SE A: simSQL Server (a partir do 2008) simBanco de Dados SQL do Azure nãoSQL Data Warehouse do Azure nãoParallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

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.This function returns the line number of occurrence of an error that caused the CATCH block of a TRY...CATCH construct to execute.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

ERROR_LINE ( )  

Tipo de retornoReturn Type

intint

Valor retornadoReturn Value

Quando chamado em um bloco CATCH, ERROR_LINE retornaWhen called in a CATCH block, ERROR_LINE returns

  • o número de linha em que o erro ocorreuthe line number where the error occurred
  • o número de linha em uma rotina se o erro ocorreu dentro de um procedimento armazenado ou gatilhothe line number in a routine, if the error occurred within a stored procedure or trigger
  • NULL, se chamado fora do escopo de um bloco CATCH.NULL, if called outside the scope of a CATCH block.

RemarksRemarks

Uma chamada a ERROR_LINE pode ocorrer em qualquer lugar dentro do escopo de um bloco CATCH.A call to ERROR_LINE can happen anywhere within the scope of a CATCH block.

ERROR_LINE retorna o número de linha em que o erro ocorreu.ERROR_LINE returns the line number at which the error occurred. 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.This happens regardless of the location of the ERROR_LINE call within the scope of the CATCH block, and regardless of the number of calls to ERROR_LINE. Isso contrasta com funções como @@ERROR.This contrasts with functions, such as @@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.@@ERROR returns an error number in the statement immediately following the one that causes an error, or in the first statement of a CATCH block.

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.In nested CATCH blocks, ERROR_LINE returns the error line number specific to the scope of the CATCH block in which it is referenced. Por exemplo, o bloco CATCH de um constructo TRY...CATCH poderia ter um constructo TRY...CATCH aninhado.For example, the CATCH block of a TRY...CATCH construct could contain a nested TRY...CATCH construct. Dentro do bloco CATCH aninhado, ERROR_LINE retorna o número de linha do erro que invocou o bloco CATCH aninhado.Within the nested CATCH block, ERROR_LINE returns the line number for the error that invoked the nested CATCH block. 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.If ERROR_LINE runs in the outer CATCH block, it returns the line number for the error that invoked that specific CATCH block.

ExemplosExamples

A.A. Usando ERROR_LINE em um bloco CATCHUsing ERROR_LINE in a CATCH block

Este exemplo de código a seguir mostra uma instrução SELECT que gera um erro de divisão por zero.This code example shows a SELECT statement that generates a divide-by-zero error. ERROR_LINE retorna o número de linha em que ocorreu o erro.ERROR_LINE returns the line number where the error occurred.

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

Aqui está o conjunto de resultados.Here is the result set.

Result 
-----------

(0 row(s) affected)

ErrorLine
-----------
4

(1 row(s) affected)

B.B. Usando ERROR_LINE em um bloco CATCH com um procedimento armazenadoUsing ERROR_LINE in a CATCH block with a stored procedure

Este exemplo mostra um procedimento armazenado que gera um erro de divisão por zero.This example shows a stored procedure that generates a divide-by-zero error. ERROR_LINE retorna o número de linha em que ocorreu o erro.ERROR_LINE returns the line number where the error occurred.

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

Aqui está o conjunto de resultados.Here is the result set.

-----------

(0 row(s) affected)

ErrorLine
-----------
7

(1 row(s) affected)  
   

C.C. Usando ERROR_LINE em um bloco CATCH com outras ferramentas de tratamento de errosUsing ERROR_LINE in a CATCH block with other error-handling tools

Este exemplo de código a seguir mostra uma instrução SELECT que gera um erro de divisão por zero.This code example shows a SELECT statement that generates a divide-by-zero error. ERROR_LINE retorna o número de linha em que ocorreu o erro e informações sobre o erro propriamente dito.ERROR_LINE returns the line number where the error occurred, and information relating to the error itself.

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.Here is the result set.

-----------

(0 row(s) affected)

ErrorNumber ErrorSeverity ErrorState ErrorProcedure ErrorLine ErrorMessage
----------- ------------- ---------- -------------- --------- ---------------------------------
8134        16            1          NULL           3         Divide by zero error encountered.

(1 row(s) affected)
  

Consulte TambémSee Also

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