ERROR_NUMBER (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW) Endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric
Questa funzione restituisce il numero dell'errore che ha causato l'esecuzione del blocco CATCH di un costrutto TRY...CATCH.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
ERROR_NUMBER ( )
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
Il set di risultati è il seguente.
-----------
(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
Il set di risultati è il seguente.
-----------
(0 row(s) affected)
ErrorNumber ErrorSeverity ErrorState ErrorProcedure ErrorLine ErrorMessage
----------- ------------- ----------- --------------- ---------- ----------------------------------
8134 16 1 NULL 4 Divide by zero error encountered.
(1 row(s) affected)
Vedi 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 a errori ed eventi (motore di database)