Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Hurtownia danych w usłudze Microsoft Fabric
Baza danych SQL w usłudze Microsoft Fabric
Ta funkcja zwraca nazwę procedury składowanej lub wyzwalacza, gdy wystąpi błąd, jeśli ten błąd spowodował CATCH wykonanie bloku TRY...CATCH konstrukcji.
- Program SQL Server 2017 (14.x) i nowsze wersje zwracają
schema_name.stored_procedure_name - Zwracanie programu SQL Server 2016 (13.x) i usługi Azure SQL Database
stored_procedure_name
Transact-SQL konwencje składni
Składnia
ERROR_PROCEDURE ( )
Typy zwracane
nvarchar(128)
Wartość zwracana
Po wywołaniu CATCH w bloku ERROR_PROCEDURE zwraca nazwę procedury składowanej lub wyzwalacza, w którym pochodzi błąd.
ERROR_PROCEDURE Zwraca NULL wartość , jeśli błąd nie wystąpił w procedurze składowanej lub wyzwalaczu.
ERROR_PROCEDURE funkcja zwraca NULL wartość po wywołaniu poza zakresem CATCH bloku.
Uwagi
ERROR_PROCEDURE obsługuje wywołania w dowolnym miejscu w zakresie CATCH bloku.
ERROR_PROCEDURE Zwraca nazwę procedury składowanej lub wyzwalacza, w którym występuje błąd, niezależnie od tego, ile razy jest uruchamiany, lub gdzie jest uruchamiany, w zakresie CATCH bloku. Ten wynik kontrastuje z funkcją taką jak @@ERROR, która zwraca tylko numer błędu w instrukcji bezpośrednio po tej, która powoduje błąd.
Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)
Odp. Używanie ERROR_PROCEDURE w bloku CATCH
W tym przykładzie przedstawiono procedurę składowaną, która generuje błąd dzielenia przez zero.
ERROR_PROCEDURE Zwraca nazwę procedury składowanej, w której wystąpił błąd.
-- 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
Oto zestaw wyników.
-----------
(0 row(s) affected)
ErrorProcedure
--------------------
usp_ExampleProc
(1 row(s) affected)
B. Używanie ERROR_PROCEDURE w bloku CATCH z innymi narzędziami do obsługi błędów
W tym przykładzie przedstawiono procedurę składowaną, która generuje błąd dzielenia przez zero. Wraz z nazwą procedury składowanej, w której wystąpił błąd, procedura składowana zwraca informacje o błędzie.
-- 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
Oto zestaw wyników.
-----------
(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)