MSDN Library

ERROR_NUMBER (Transact-SQL)

 

THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

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

Si applica a: SQL Server (da SQL Server 2008 fino alla versione corrente), Database SQL di Azure.

Topic link icon Convenzioni della sintassi Transact-SQL

  
ERROR_NUMBER ( )  

int

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.

Questa funzione può essere chiamata ovunque 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.

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.

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.

  
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  

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)

Aggiunte alla community

Mostra:
© 2016 Microsoft