ERROR_NUMBER (Transact-SQL)
Restituisce il numero dell'errore che ha causato l'esecuzione del blocco CATCH di un costrutto TRY…CATCH.
Convenzioni 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 AdventureWorks2012;
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 AdventureWorks2012;
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