ERROR_LINE (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
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.
Convenciones de sintaxis de Transact-SQL
Sintaxis
ERROR_LINE ( )
Tipo de valor devuelto
int
Valor devuelto
Cuando se llama en un bloque CATCH, ERROR_LINE
devuelve
- el número de línea donde se produjo el error.
- el número de línea de una rutina, si el error se produjo en un procedimiento almacenado o desencadenador.
- NULL, si se llamó desde fuera del ámbito del bloque CATCH.
Comentarios
Una llamada a ERROR_LINE
se puede producir en cualquier lugar del ámbito de un bloque CATCH.
ERROR_LINE
devuelve el número de línea en que se produjo el error. 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
. Esto contrasta con las funciones, como @@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.
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. Por ejemplo, el bloque CATCH de una construcción TRY...CATCH podría contener una construcción TRY...CATCH anidada. Dentro del bloque CATCH anidado, ERROR_LINE
devuelve el número de línea del error que invocó el bloque CATCH anidado. 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.
Ejemplos
A. Utilizar ERROR_LINE en un bloque CATCH
En este ejemplo de código se muestra una instrucción SELECT
que genera un error de división por cero. ERROR_LINE
devuelve el número de línea donde se produjo el error.
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_LINE() AS ErrorLine;
END CATCH;
GO
B. Utilizar ERROR_LINE en un bloque CATCH con un procedimiento almacenado
En este ejemplo se muestra un procedimiento almacenado que genera un error de división por cero. ERROR_LINE
devuelve el número de línea donde se produjo el error.
-- 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. Utilizar ERROR_LINE en un bloque CATCH con otras herramientas de control de errores
En este ejemplo de código se muestra una instrucción SELECT
que genera un error de división por cero. ERROR_LINE
devuelve el número de línea donde se produjo el error y la información relacionada con el error propiamente dicho.
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 también
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)