ERROR_LINE (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure 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 ( )

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez Versions antérieures de la documentation.

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)