ERROR_NUMBER (Transact-SQL)

Si applica a: sìSQL Server (tutte le versioni supportate) Sìdatabase SQL di Azure SìIstanza gestita di SQL di Azure sìAzure Synapse Analytics sìParallel Data Warehouse

Questa funzione restituisce il numero dell'errore che ha causato l'esecuzione del blocco CATCH di un costrutto TRY...CATCH.

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

Sintassi

ERROR_NUMBER ( )  

Nota

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

Tipi restituiti

int

Valore restituito

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

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

Osservazioni

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

ERROR_NUMBER restituisce un numero di errore pertinente indipendentemente dal numero di esecuzioni o dalla posizione in cui viene eseguita nell'ambito del blocco CATCH. Questo tipo di comportamento è in contrasto con una funzione come @@ERROR, che restituisce solo un numero di errore nell'istruzione immediatamente successiva a quella che ha provocato un errore.

In un blocco CATCH``ERROR_NUMBER restituisce il numero di errore specifico dell'ambito del blocco CATCH che ha fatto riferimento a tale blocco CATCH. Ad esempio, il blocco CATCH di un costrutto esterno TRY...CATCH potrebbe includere un costrutto TRY...CATCH interno. In tale blocco CATCH interno ERROR_NUMBER restituisce il numero dell'errore che ha richiamato il blocco CATCH interno. Se ERROR_NUMBER viene eseguito nel blocco CATCH esterno, restituisce il numero dell'errore che ha richiamato il blocco CATCH esterno.

Esempi

R. Utilizzo di ERROR_NUMBER in un blocco CATCH

In questo esempio viene illustrata un'istruzione SELECT che genera un errore di divisione per zero. Il blocco CATCH restituisce il numero di errore.

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

Questo è il set di risultati.

-----------

(0 row(s) affected)

ErrorNumber
-----------
8134

(1 row(s) affected)

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

In questo esempio viene illustrata un'istruzione SELECT che genera un errore di divisione per zero. Con il numero di errore, il blocco CATCH restituisce le informazioni su tale errore.

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  

Questo è il set di risultati.

-----------

(0 row(s) affected)

ErrorNumber ErrorSeverity ErrorState  ErrorProcedure   ErrorLine  ErrorMessage
----------- ------------- ----------- ---------------  ---------- ----------------------------------
8134        16            1           NULL             4          Divide by zero error encountered.

(1 row(s) affected)

Vedere anche

sys.messages (Transact-SQL)
TRY...CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
Guida di riferimento ad errori e eventi (motore di database)