Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto manualmente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

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.

Si applica a: SQL Server (SQL Server 2008 tramite versione corrente), Database SQL di Windows Azure (versione iniziale tramite versione corrente).

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

ERROR_PROCEDURE ( )

nvarchar(128)

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.

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.

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.

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

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

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft