Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Point de terminaison d’analytique SQL dans Microsoft Fabric
Entrepôt dans Microsoft Fabric
Base de données SQL dans Microsoft Fabric
Cette fonction retourne le nom de la procédure stockée ou du déclencheur où une erreur se produit, si cette erreur a provoqué l’exécution CATCH du bloc d’une TRY...CATCH construction.
- SQL Server 2017 (14.x) et versions ultérieures retournent
schema_name.stored_procedure_name - RETOUR SQL Server 2016 (13.x) et Azure SQL Database
stored_procedure_name
Conventions de la syntaxe Transact-SQL
Syntaxe
ERROR_PROCEDURE ( )
Types de retour
nvarchar(128)
Valeur retournée
Lorsqu’elle est appelée dans un CATCH bloc, ERROR_PROCEDURE retourne le nom de la procédure stockée ou du déclencheur dans lequel l’erreur provient.
ERROR_PROCEDURE retourne NULL si l’erreur n’a pas eu lieu dans une procédure stockée ou un déclencheur.
ERROR_PROCEDURE retourne lorsqu’elle est NULL appelée en dehors de l’étendue d’un CATCH bloc.
Notes
ERROR_PROCEDURE prend en charge les appels n’importe où dans l’étendue d’un CATCH bloc.
ERROR_PROCEDURE retourne le nom de la procédure stockée ou du déclencheur où une erreur se produit, quel que soit le nombre de fois où il/elle s’exécute ou l’emplacement de son exécution dans l’étendue du bloc CATCH. Ce résultat contraste avec une fonction comme @@ERROR, qui retourne uniquement un numéro d’erreur dans l’instruction immédiatement après celle qui provoque une erreur.
Exemples : Azure Synapse Analytics et Analytics Platform System (PDW)
R. Utiliser ERROR_PROCEDURE dans un bloc CATCH
L’exemple suivant illustre une procédure stockée qui génère une erreur de division par zéro.
ERROR_PROCEDURE retourne le nom de la procédure stockée 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_PROCEDURE() AS ErrorProcedure;
END CATCH;
GO
Voici le jeu de résultats.
-----------
(0 row(s) affected)
ErrorProcedure
--------------------
usp_ExampleProc
(1 row(s) affected)
B. Utiliser ERROR_PROCEDURE dans un bloc CATCH avec d’autres outils de gestion des erreurs
L’exemple suivant illustre une procédure stockée qui génère une erreur de division par zéro. Outre le nom de la procédure stockée où l’erreur s’est produite, la procédure stockée retourne des informations sur cette erreur.
-- 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_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_MESSAGE() AS ErrorMessage,
ERROR_LINE() AS ErrorLine;
END CATCH;
GO
Voici le jeu de résultats.
-----------
(0 row(s) affected)
ErrorNumber ErrorSeverity ErrorState ErrorProcedure ErrorMessage ErrorLine
----------- ------------- ----------- ---------------- ---------------------------------- -----------
8134 16 1 usp_ExampleProc Divide by zero error encountered. 6
(1 row(s) affected)