ERROR_PROCEDURE (Transact-SQL)

Restituisce il nome della stored procedure o del trigger in cui si è verificato un errore che ha causato l'esecuzione del blocco CATCH di un costrutto TRY…CATCH.

Sintassi

ERROR_PROCEDURE()

Tipi restituiti

nvarchar(126)

Valore restituito

Quando viene chiamata in un blocco CATCH, restituisce il nome della stored procedure in cui si è verificato l'errore.

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

Restituisce NULL se chiamata all'esterno dell'ambito di un blocco CATCH.

Osservazioni

La funzione ERROR_PROCEDURE può essere chiamata in qualsiasi punto nell'ambito di un blocco CATCH.

ERROR_PROCEDURE restituisce il nome della stored procedure o del trigger in cui si è verificato l'errore, indipendentemente dal numero di chiamate o dal punto in cui viene chiamata nell'ambito del blocco CATCH. Alcune funzioni, ad esempio @@ERROR, restituiscono invece il numero di errore nell'istruzione immediatamente successiva a quella che ha causato l'errore oppure nella prima istruzione del blocco CATCH.

Nel caso di blocchi CATCH nidificati, ERROR_PROCEDURE restituisce il nome della stored procedure o del trigger specifico dell'ambito del blocco CATCH in cui vi viene fatto riferimento. Ad esempio, il blocco CATCH di un costrutto TRY…CATCH potrebbe contenere un blocco TRY…CATCH nidificato. All'interno del blocco CATCH nidificato, ERROR_PROCEDURE restituisce il nome della stored procedure o del trigger in cui si è verificato l'errore che ha richiamato il blocco CATCH nidificato. Se la funzione ERROR_PROCEDURE viene eseguita nel blocco CATCH esterno, restituisce il nome della stored procedure o del trigger in cui è verificato l'errore che ha richiamato tale blocco CATCH.

Esempi

A. Utilizzo di ERROR_PROCEDURE in un blocco CATCH

Nell'esempio di codice seguente 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.

USE AdventureWorks;
GO

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

B. Utilizzo di ERROR_PROCEDURE in un blocco CATCH con altri strumenti di gestione degli errori

Nell'esempio di codice seguente viene illustrata una stored procedure che genera un errore di divisione per zero. Oltre al nome della stored procedure in cui si è verificato l'errore, vengono restituite altre informazioni correlate all'errore.

USE AdventureWorks;
GO

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

Vedere anche

Riferimento

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)

Altre risorse

Recupero di informazioni sugli errori in Transact-SQL
Utilizzo di TRY...CATCH in Transact-SQL
Utilizzo di RAISERROR
Gravità degli errori del Motore di database

Guida in linea e informazioni

Assistenza su SQL Server 2005