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

SE APLICA A: síSQL Server síAzure SQL Database noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelosAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Esta función devuelve el número de línea de la repetición de un error que provocó la ejecución del bloque CATCH de una construcción TRY…CATCH.This function returns the line number of occurrence of an error that caused the CATCH block of a TRY...CATCH construct to execute.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

ERROR_LINE ( )  

Tipo de valor devueltoReturn Type

intint

Valor devueltoReturn Value

Cuando se llama en un bloque CATCH, ERROR_LINE devuelveWhen called in a CATCH block, ERROR_LINE returns

  • el número de línea donde se produjo el error.the line number where the error occurred
  • el número de línea de una rutina, si el error se produjo en un procedimiento almacenado o desencadenador.the line number in a routine, if the error occurred within a stored procedure or trigger
  • NULL, si se llamó desde fuera del ámbito del bloque CATCH.NULL, if called outside the scope of a CATCH block.

ObservacionesRemarks

Una llamada a ERROR_LINE se puede producir en cualquier lugar del ámbito de un bloque CATCH.A call to ERROR_LINE can happen anywhere within the scope of a CATCH block.

ERROR_LINE devuelve el número de línea en que se produjo el error.ERROR_LINE returns the line number at which the error occurred. Esto ocurre independientemente de la ubicación de la llamada a ERROR_LINE dentro del ámbito del bloque CATCH y del número de llamadas a 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. Esto contrasta con las funciones, como @@ERROR.This contrasts with functions, such as @@ERROR. @@ERROR devuelve el número de error en la instrucción inmediatamente posterior a la que produjo el error o en la primera instrucción de un bloque 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.

En los bloques CATCH anidados, ERROR_LINE devuelve el número de línea del error específico del ámbito del bloque CATCH en el que se hace referencia al mismo.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 ejemplo, el bloque CATCH de una construcción TRY...CATCH podría contener una construcción TRY...CATCH anidada.For example, the CATCH block of a TRY...CATCH construct could contain a nested TRY...CATCH construct. Dentro del bloque CATCH anidado, ERROR_LINE devuelve el número de línea del error que invocó el bloque CATCH anidado.Within the nested CATCH block, ERROR_LINE returns the line number for the error that invoked the nested CATCH block. Si ERROR_LINE se ejecuta en el bloque CATCH externo, devuelve el número de línea del error que invocó ese bloque 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.

EjemplosExamples

A.A. Utilizar ERROR_LINE en un bloque CATCHUsing ERROR_LINE in a CATCH block

En este ejemplo de código se muestra una instrucción SELECT que genera un error de división por cero.This code example shows a SELECT statement that generates a divide-by-zero error. ERROR_LINE devuelve el número de línea donde se produjo el error.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  

El conjunto de resultados es el siguiente:Here is the result set.

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

(0 row(s) affected)

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

(1 row(s) affected)

B.B. Utilizar ERROR_LINE en un bloque CATCH con un procedimiento almacenadoUsing ERROR_LINE in a CATCH block with a stored procedure

En este ejemplo se muestra un procedimiento almacenado que genera un error de división por cero.This example shows a stored procedure that generates a divide-by-zero error. ERROR_LINE devuelve el número de línea donde se produjo el error.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  

El conjunto de resultados es el siguiente:Here is the result set.

-----------

(0 row(s) affected)

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

(1 row(s) affected)  
   

C.C. Utilizar ERROR_LINE en un bloque CATCH con otras herramientas de control de erroresUsing ERROR_LINE in a CATCH block with other error-handling tools

En este ejemplo de código se muestra una instrucción SELECT que genera un error de división por cero.This code example shows a SELECT statement that generates a divide-by-zero error. ERROR_LINE devuelve el número de línea donde se produjo el error y la información relacionada con el error propiamente dicho.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  

El conjunto de resultados es el siguiente: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 tambiénSee 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)