Condividi tramite


ERROR_NUMBER (Transact-SQL)

Restituisce il numero dell'errore che ha causato l'esecuzione del blocco CATCH di un costrutto TRY…CATCH.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

ERROR_NUMBER ( )

Tipi restituiti

int

Valore restituito

Se chiamata in un blocco CATCH, questa funzione restituisce il numero di errore del messaggio di errore che ha causato l'esecuzione del blocco CATCH.

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

Osservazioni

È possibile chiamare questa funzione in qualsiasi posizione all'interno dell'ambito di un blocco CATCH.

ERROR_NUMBER restituisce il numero di errore indipendentemente dal numero di esecuzioni o dalla posizione in cui viene eseguita nell'ambito del blocco CATCH. Il funzionamento è quindi diverso rispetto a @@ERROR, che restituisce solo il numero di errore nell'istruzione immediatamente successiva a quella che ha causato l'errore o la prima istruzione di un blocco CATCH.

In blocchi CATCH nidificati, ERROR_NUMBER restituisce il numero di errore specifico dell'ambito del blocco CATCH che include il riferimento alla funzione. Ad esempio, il blocco CATCH di un costrutto esterno TRY...CATCH potrebbe includere un costrutto TRY...CATCH nidificato. Nell'ambito del blocco CATCH nidificato, ERROR_NUMBER restituisce il numero dell'errore che ha richiamato il blocco CATCH nidificato. Se la funzione ERROR_NUMBER viene eseguita nel blocco CATCH esterno, restituisce il numero dell'errore che ha richiamato tale blocco CATCH.

Esempi

A. Utilizzo di ERROR_NUMBER in un blocco CATCH

Nell'esempio seguente viene illustrata un'istruzione SELECT che genera un errore di divisione per zero. Viene restituito il numero dell'errore.

USE AdventureWorks;
GO

BEGIN TRY
    -- Generate a divide-by-zero error.
    SELECT 1/0;
END TRY
BEGIN CATCH
    SELECT ERROR_NUMBER() AS ErrorNumber;
END CATCH;
GO

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

Nell'esempio seguente viene illustrata un'istruzione SELECT che genera un errore di divisione per zero. Oltre al numero dell'errore vengono restituite informazioni correlate all'errore.

USE AdventureWorks;
GO

BEGIN TRY
    -- Generate a divide-by-zero error.
    SELECT 1/0;
END TRY
BEGIN CATCH
    SELECT
        ERROR_NUMBER() AS ErrorNumber,
        ERROR_SEVERITY() AS ErrorSeverity,
        ERROR_STATE() AS ErrorState,
        ERROR_PROCEDURE() AS ErrorProcedure,
        ERROR_LINE() AS ErrorLine,
        ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO