ERROR_PROCEDURE (Transact-SQL)

Si applica a:yes SQL Server (tutte le versioni supportate) Yesdatabase SQL di Azure YesIstanza gestita di SQL di Azure yesAzure Synapse Analytics Analytics yesPlatform System (PDW)

Questa funzione restituisce il nome della stored procedure o del trigger in cui si verifica un errore se tale errore ha causato l'esecuzione del blocco CATCH di un costrutto TRY...CATCH.

  • Dalla versione SQL Server 2017 alla versione corrente restituisce schema_name.stored_procedure_name
  • SQL Server 2016 restituisce stored_procedure_name

Topic link iconConvenzioni della sintassi transact-SQL

Sintassi

ERROR_PROCEDURE ( )  

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 e versioni precedenti, vedere Documentazione delle versioni precedenti.

Tipi restituiti

nvarchar(128)

Valore restituito

Quando viene chiamato in un blocco CATCH, ERROR_PROCEDURE restituisce il nome della stored procedure o del trigger in cui si è verificato l'errore.

ERROR_PROCEDURE restituisce NULL se l'errore non si è verificato all'interno di una stored procedure o un trigger.

ERROR_PROCEDURE restituisce NULL quando viene chiamata all'esterno dell'ambito di un blocco CATCH.

Osservazioni

ERROR_PROCEDURE supporta le chiamate da un qualsiasi punto nell'ambito di un blocco CATCH.

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 contrasto con una funzione come @@ERROR, che restituisce solo un numero di errore nell'istruzione immediatamente successiva a quello che causa un errore.

Esempi: Azure Synapse Analytics and Analytics Platform System (PDW)

R. Utilizzo di 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  

Questo è il set di risultati.

-----------

(0 row(s) affected)

ErrorProcedure
--------------------
usp_ExampleProc

(1 row(s) affected)

B. Utilizzo di 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

Questo è il set di risultati.

-----------

(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)

Vedere anche

sys.messages (Transact-SQL)
TRY...CATCH (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)