Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Piattaforma di strumenti analitici (PDW)
Endpoint di analisi SQL in Microsoft Fabric
Warehouse in Microsoft Fabric
Questa funzione restituisce il nome della stored procedure o del trigger in cui si verifica un errore, se l'errore ha causato l'esecuzione CATCH
del blocco di un TRY...CATCH
costrutto.
- SQL Server 2017 (14.x) e versioni successive restituiscono
schema_name.stored_procedure_name
- SQL Server 2016 (13.x) e database SQL di Azure restituiscono
stored_procedure_name
Convenzioni relative alla sintassi Transact-SQL
Sintassi
ERROR_PROCEDURE ( )
Tipi restituiti
Nvarchar(128)
Valore restituito
Quando viene chiamato in un CATCH
blocco, ERROR_PROCEDURE
restituisce il nome della stored procedure o del trigger in cui ha avuto origine l'errore.
ERROR_PROCEDURE
restituisce NULL
se l'errore non si è verificato all'interno di una stored procedure o di un trigger.
ERROR_PROCEDURE
restituisce NULL
quando viene chiamato all'esterno dell'ambito di un CATCH
blocco.
Osservazioni:
ERROR_PROCEDURE
supporta le chiamate ovunque all'interno dell'ambito di un CATCH
blocco.
ERROR_PROCEDURE
restituisce il nome della stored procedure o del trigger in cui si verifica un errore, indipendentemente dal numero di esecuzioni o dalla posizione in cui viene eseguita nell'ambito del blocco CATCH
. Questo risultato è in contrasto con una funzione come @@ERROR
, che restituisce solo un numero di errore nell'istruzione immediatamente successiva a quella che causa un errore.
Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)
R. Usare ERROR_PROCEDURE in un blocco CATCH
In questo esempio viene illustrata una stored procedure che genera un errore di divisione per zero.
ERROR_PROCEDURE
restituisce il nome della stored procedure in cui si è verificato l'errore.
-- 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
Il set di risultati è il seguente.
-----------
(0 row(s) affected)
ErrorProcedure
--------------------
usp_ExampleProc
(1 row(s) affected)
B. Usare ERROR_PROCEDURE in un blocco CATCH con altri strumenti di gestione degli errori
In questo esempio viene illustrata una stored procedure che genera un errore di divisione per zero. Insieme al nome della stored procedure in cui si è verificato l'errore, la stored restituisce informazioni sull'errore.
-- 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
Il set di risultati è il seguente.
-----------
(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)