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)