Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Elemzési platformrendszer (PDW)
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
Ez a függvény annak a tárolt eljárásnak vagy eseményindítónak a nevét adja vissza, ahol hiba történik, ha ez a hiba egy CATCH szerkezet blokkjának TRY...CATCH végrehajtását okozta.
- Az SQL Server 2017 (14.x) és újabb verziói visszatérnek
schema_name.stored_procedure_name - AZ SQL Server 2016 (13.x) és az Azure SQL Database visszatérése
stored_procedure_name
Transact-SQL szintaxis konvenciók
Szemantika
ERROR_PROCEDURE ( )
Visszatérési típusok
Nvarchar(128)
Visszaadott érték
Blokk meghívása CATCH esetén annak a tárolt eljárásnak vagy eseményindítónak a nevét adja vissza, ERROR_PROCEDURE amelyből a hiba származik.
ERROR_PROCEDURE visszaadja NULL , ha a hiba nem egy tárolt eljáráson vagy eseményindítón belül történt.
ERROR_PROCEDURE akkor ad NULL vissza, ha a meghívás egy blokk hatókörén kívül esik CATCH .
Megjegyzések
ERROR_PROCEDURE a blokk hatókörén CATCH belül bárhol támogatja a hívásokat.
ERROR_PROCEDURE Visszaadja annak a tárolt eljárásnak vagy eseményindítónak a nevét, ahol hiba történik, függetlenül attól, hogy hányszor fut, vagy hol fut a CATCH blokk hatókörén belül. Ez az eredmény ellentétben áll egy olyan függvénnyel, mint @@ERRORa , amely csak egy hibaszámot ad vissza az utasításban, közvetlenül azt követően, amely hibát okoz.
Példák: Azure Synapse Analytics and Analytics Platform System (PDW)
Egy. ERROR_PROCEDURE használata CATCH blokkban
Ez a példa egy tárolt eljárást mutat be, amely osztva nullával hibát okoz.
ERROR_PROCEDURE visszaadja annak a tárolt eljárásnak a nevét, ahol a hiba történt.
-- 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
Itt van az eredmények összessége.
-----------
(0 row(s) affected)
ErrorProcedure
--------------------
usp_ExampleProc
(1 row(s) affected)
B. ERROR_PROCEDURE használata CATCH blokkban más hibakezelő eszközökkel
Ez a példa egy tárolt eljárást mutat be, amely osztva nullával hibát okoz. A tárolt eljárás nevével együtt, ahol a hiba történt, a tárolt eljárás a hibára vonatkozó információkat ad vissza.
-- 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
Itt van az eredmények összessége.
-----------
(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)