ERROR_LINE (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance

Cette fonction retourne le numéro de ligne de l’occurrence d’une erreur qui a provoqué l’exécution du bloc CATCH d’une construction TRY...CATCH.

Conventions de la syntaxe Transact-SQL

Syntaxe

ERROR_LINE ( )

Type de retour

int

Valeur de retour

Quand elle est appelée dans un bloc CATCH, ERROR_LINE retourne

  • le numéro de la ligne où l’erreur s’est produite ;
  • 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 ;
  • NULL si l’appel a lieu en dehors de l’étendue d’un bloc CATCH.

Remarques

Un appel à ERROR_LINE peut se produire n’importe où dans l’étendue d’un bloc CATCH.

ERROR_LINE retourne le numéro de la ligne de survenue de l’erreur. Cela se produit quel que soit l’emplacement de l’appel à ERROR_LINE dans l’étendue du bloc CATCH et quel que soit le nombre d’appels à ERROR_LINE. Ce comportement contraste avec celui de fonctions comme @@ERROR. @@ERROR retourne un numéro d’erreur dans l’instruction immédiatement après celle qui a provoqué une erreur ou dans la première instruction d’un bloc CATCH.

Dans les blocs CATCH imbriqués, ERROR_LINE retourne le numéro de ligne de l’erreur spécifique à l’étendue du bloc CATCH référencé. Par exemple, le bloc CATCH d’une construction TRY...CATCH peut contenir une construction TRY...CATCH imbriquée. Dans un bloc CATCH imbriqué, ERROR_LINE retourne le numéro de ligne de l’erreur qui a appelé le bloc CATCH imbriqué. Si ERROR_LINE s’exécute dans le bloc CATCH externe, elle retourne le numéro de ligne de l’erreur qui a appelé ce bloc CATCH spécifique.

Exemples

R. Utilisation de ERROR_LINE dans un bloc CATCH

L’exemple de code suivant présente une instruction SELECT qui génère une erreur de division par zéro. ERROR_LINE retourne le numéro de la ligne où l’erreur s’est produite.

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 suivant illustre une procédure stockée qui génère une erreur de division par zéro. ERROR_LINE retourne le numéro de la ligne où 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 présente une instruction SELECT qui génère une erreur de division par zéro. ERROR_LINE retourne le numéro de la ligne où l’erreur s’est produite et les informations relatives à l’erreur elle-même.

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  

Voir aussi

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)