ERROR_LINE (Transact-SQL)
Retourne le numéro de la ligne erronée qui a provoqué l'exécution du bloc CATCH d'une construction TRY…CATCH.
Conventions de syntaxe de Transact-SQL
Syntaxe
ERROR_LINE ( )
Type de retour
int
Valeur de retour
Lors de l'appel d'un bloc CATCH :
Retourne le numéro de la ligne erronée.
Retourne le numéro de la ligne dans un sous-programme si l'erreur s'est produite dans une procédure stockée ou un déclencheur.
Retourne la valeur NULL en cas d'appel en dehors de l'étendue d'un bloc CATCH.
Notes
Cette fonction peut être appelée n'importe où dans l'étendue d'un bloc CATCH.
ERROR_LINE retourne le numéro de la ligne erronée, quel que soit le nombre d'appels ou leur emplacement dans le bloc CATCH. Tel n'est pas le cas des fonctions, telles que @@ERROR, qui retournent un numéro d'erreur dans l'instruction immédiatement après celui qui a causé une erreur ou dans une première instruction d'un bloc CATCH.
Dans les blocs CATCH imbriqués, ERROR_LINE retourne le numéro de la ligne erronée spécifique du bloc CATCH référencé. Par exemple, le bloc CATCH d'une construction TRY…CATCH peut inclure une construction TRY…CATCH imbriquée. Dans un bloc CATCH imbriqué, ERROR_LINE retourne le numéro de ligne pour l'erreur qui a appelé le bloc CATCH imbriqué. Si ERROR_LINE est exécuté dans le bloc CATCH externe, il retourne le numéro de ligne pour l'erreur qui a appelé le bloc CATCH.
Exemples
A.Utilisation de ERROR_LINE dans un bloc CATCH
L'exemple de code suivant montre une instruction SELECT qui génère une erreur de division par zéro. Le numéro de la ligne erronée est retourné.
USE AdventureWorks2012;
GO
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_LINE() AS ErrorLine;
END CATCH;
GO
B.Utilisation de ERROR_LINE dans un bloc CATCH avec une procédure stockée
L'exemple de code suivant affiche une procédure stockée qui génère une erreur de division par zéro. ERROR_LINE retourne le numéro de ligne dans la procédure stockée dans laquelle l'erreur s'est produite.
-- 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.Utilisation de ERROR_LINE dans un bloc CATCH avec d'autres outils de traitement des erreurs
L'exemple de code suivant montre une instruction SELECT qui génère une erreur de division par zéro. Des informations relatives à l'erreur sont retournées avec le numéro de ligne erronée.
USE AdventureWorks2012;
GO
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