ERROR_LINE (Transact-SQL)
S’applique à : SQL ServerAzure 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 ( )
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 renvoyé
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)
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour