Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-Analyseendpunkt in Microsoft Fabric
Lagerhaus in Microsoft Fabric
SQL-Datenbank in Microsoft Fabric
Diese Funktion gibt den Namen der gespeicherten Prozedur zurück oder löst einen Fehler aus, wenn dieser Fehler den CATCH Block eines TRY...CATCH Konstrukts ausgeführt hat.
- SQL Server 2017 (14.x) und höhere Versionen geben zurück
schema_name.stored_procedure_name - Rückgabe von SQL Server 2016 (13.x) und Azure SQL-Datenbank
stored_procedure_name
Transact-SQL-Syntaxkonventionen
Syntax
ERROR_PROCEDURE ( )
Rückgabetypen
nvarchar(128)
Rückgabewert
Wenn sie in einem CATCH Block aufgerufen wird, wird der Name der gespeicherten Prozedur oder des Triggers zurückgegeben, ERROR_PROCEDURE in dem der Fehler stammt.
ERROR_PROCEDURE gibt zurück NULL , wenn der Fehler nicht innerhalb einer gespeicherten Prozedur oder eines Triggers aufgetreten ist.
ERROR_PROCEDURE gibt den NULL Aufruf außerhalb des Bereichs eines CATCH Blocks zurück.
Bemerkungen
ERROR_PROCEDURE unterstützt Anrufe an beliebiger Stelle innerhalb des Bereichs eines CATCH Blocks.
ERROR_PROCEDURE gibt den Namen der gespeicherten Prozedur oder des Triggers, bei der bzw. bei dem ein Fehler auftritt, unabhängig davon zurück, wie oft die Funktion ausgeführt wurde oder wo sie im Bereich des CATCH-Blocks ausgeführt wurde. Dieses Ergebnis steht im Gegensatz zu einer Funktion wie @@ERROR, die nur eine Fehlernummer in der Anweisung zurückgibt, die unmittelbar auf den Fehler folgt, der einen Fehler verursacht.
Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)
Ein. Verwenden von ERROR_PROCEDURE in einem CATCH-Block
Dieses Beispiel zeigt eine gespeicherte Prozedur, in der ein Fehler aufgrund einer Division durch 0 (null) generiert wird.
ERROR_PROCEDURE gibt den Namen der gespeicherten Prozedur zurück, in der der Fehler aufgetreten ist.
-- 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
Hier sehen Sie das Ergebnis.
-----------
(0 row(s) affected)
ErrorProcedure
--------------------
usp_ExampleProc
(1 row(s) affected)
B. Verwenden von ERROR_PROCEDURE in einem CATCH-Block mit anderen Fehlerbehandlungstools
Dieses Beispiel zeigt eine gespeicherte Prozedur, in der ein Fehler aufgrund einer Division durch 0 (null) generiert wird. Die gespeicherte Prozedur gibt Informationen zum Fehler zusammen mit dem Namen der gespeicherten Prozedur, in der der Fehler aufgetreten ist, zurück.
-- 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
Hier sehen Sie das Ergebnis.
-----------
(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)