Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Warehouse i Microsoft Fabric
Den här funktionen returnerar namnet på den lagrade proceduren eller utlösaren där ett fel inträffar, om felet orsakade att byggblocket CATCHTRY...CATCH körs.
- SQL Server 2017 (14.x) och senare versioner returnerar
schema_name.stored_procedure_name - SQL Server 2016 (13.x) och Azure SQL Database-retur
stored_procedure_name
Transact-SQL syntaxkonventioner
Syntax
ERROR_PROCEDURE ( )
Returtyper
nvarchar(128)
Returvärde
När det anropas i ett CATCH block ERROR_PROCEDURE returneras namnet på den lagrade proceduren eller utlösaren där felet uppstod.
ERROR_PROCEDURE returnerar NULL om felet inte uppstod inom en lagrad procedur eller utlösare.
ERROR_PROCEDURE returnerar NULL när det anropas utanför omfånget för ett CATCH block.
Anmärkningar
ERROR_PROCEDURE stöder anrop var som helst inom omfånget för ett CATCH block.
ERROR_PROCEDURE returnerar namnet på den lagrade proceduren eller utlösaren där ett fel inträffar, oavsett hur många gånger det körs eller var det körs inom blockets CATCH omfång. Det här resultatet står i kontrast till en funktion som @@ERROR, som endast returnerar ett felnummer i -instruktionen omedelbart efter den som orsakar ett fel.
Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)
A. Använda ERROR_PROCEDURE i ett CATCH-block
Det här exemplet visar en lagrad procedur som genererar ett divide-by-zero-fel.
ERROR_PROCEDURE returnerar namnet på den lagrade procedur där felet inträffade.
-- 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
Här är resultatet.
-----------
(0 row(s) affected)
ErrorProcedure
--------------------
usp_ExampleProc
(1 row(s) affected)
B. Använda ERROR_PROCEDURE i ett CATCH-block med andra verktyg för felhantering
Det här exemplet visar en lagrad procedur som genererar ett divide-by-zero-fel. Tillsammans med namnet på den lagrade procedur där felet inträffade returnerar den lagrade proceduren information om felet.
-- 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
Här är resultatet.
-----------
(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)