Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Koncový bod analýzy SQL v Microsoft Fabric
Sklad v Microsoft Fabric
Databáze SQL v Microsoft Fabric
Tato funkce vrátí název uložené procedury nebo triggeru, kde dojde k chybě, pokud tato chyba způsobila CATCH spuštění bloku konstruktoru TRY...CATCH .
- SQL Server 2017 (14.x) a novější verze vrací
schema_name.stored_procedure_name - Vrácení SQL Serveru 2016 (13.x) a Azure SQL Database
stored_procedure_name
Syntaxe
ERROR_PROCEDURE ( )
Návratové typy
nvarchar(128)
Návratová hodnota
Při volání v CATCH bloku vrátí název uložené procedury nebo triggeru, ERROR_PROCEDURE ve kterém došlo k chybě.
ERROR_PROCEDURE vrátí NULL , pokud k chybě nedošlo v rámci uložené procedury nebo triggeru.
ERROR_PROCEDURE vrátí NULL , pokud je volána mimo rozsah CATCH bloku.
Poznámky
ERROR_PROCEDURE podporuje volání kdekoli v rozsahu CATCH bloku.
ERROR_PROCEDURE vrátí název uložené procedury nebo triggeru, ve kterém dojde k chybě, bez ohledu na to, kolikrát se spustí nebo kde běží v rámci oboru CATCH bloku. Tento výsledek kontrastuje s funkcí, jako @@ERRORje , která vrací pouze číslo chyby v příkazu bezprostředně za číslem, které způsobuje chybu.
Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)
A. Použití ERROR_PROCEDURE v bloku CATCH
Tento příklad ukazuje uloženou proceduru, která generuje chybu dělení nulou.
ERROR_PROCEDURE vrátí název uložené procedury, kde došlo k chybě.
-- 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
Tady je soubor výsledků.
-----------
(0 row(s) affected)
ErrorProcedure
--------------------
usp_ExampleProc
(1 row(s) affected)
B. Použití ERROR_PROCEDURE v bloku CATCH s jinými nástroji pro zpracování chyb
Tento příklad ukazuje uloženou proceduru, která generuje chybu dělení nulou. Spolu s názvem uložené procedury, ve které došlo k chybě, vrátí uložená procedura informace o chybě.
-- 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
Tady je soubor výsledků.
-----------
(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)
Související obsah
- systém.zprávy
- VYZKOUŠET... ZACHYTIT (Transact-SQL)
- ERROR_LINE (Transact-SQL)
- ERROR_MESSAGE (Transact-SQL)
- ERROR_NUMBER (Transact-SQL)
- ERROR_SEVERITY (Transact-SQL)
- ERROR_STATE (Transact-SQL)
- RAISERROR (Transact-SQL)
- @@ERROR (Transact-SQL)