Condividi tramite


ERROR_SEVERITY (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di strumenti analitici (PDW)Endpoint di analisi SQL in Microsoft FabricWarehouse in Microsoft Fabric

Questa funzione restituisce il valore di gravità dell'errore in cui si verifica un errore, se l'errore ha causato l'esecuzione del CATCH blocco di un TRY...CATCH costrutto.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

ERROR_SEVERITY ( )

Tipi restituiti

Int

Valore restituito

Quando viene chiamato in un CATCH blocco in cui si verifica un errore, ERROR_SEVERITY restituisce il valore di gravità dell'errore che ha causato l'esecuzione del CATCH blocco.

ERROR_SEVERITY restituisce NULL se viene chiamato all'esterno dell'ambito di un CATCH blocco.

Osservazioni:

ERROR_SEVERITY supporta le chiamate ovunque all'interno dell'ambito di un CATCH blocco.

ERROR_SEVERITY restituisce il valore di gravità di un errore, indipendentemente dal numero di esecuzioni o dalla posizione in cui viene eseguita nell'ambito del blocco CATCH. Questo contrasto con una funzione come @@ERROR, che restituisce solo un numero di errore nell'istruzione immediatamente successivo a quello che causa un errore.

ERROR_SEVERITY opera in genere in un blocco CATCH annidato. ERROR_SEVERITY restituisce il valore di gravità dell'errore specifico dell'ambito del blocco CATCH che ha fatto riferimento a tale blocco CATCH. Ad esempio, il CATCH blocco di un costrutto esterno TRY...CATCH potrebbe avere un costrutto interno TRY...CATCH . In tale blocco CATCH interno ERROR_SEVERITY restituisce il valore di gravità dell'errore che ha richiamato il blocco CATCH interno. Se ERROR_SEVERITY viene eseguito nel blocco CATCH esterno, restituisce il valore di gravità dell'errore che ha richiamato il blocco CATCH esterno.

Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)

R. Usare ERROR_SEVERITY in un blocco CATCH

In questo esempio viene illustrata una stored procedure che genera un errore di divisione per zero. ERROR_SEVERITY restituisce il valore di gravità di tale errore.

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

Il set di risultati è il seguente.

-----------

(0 row(s) affected)

ErrorSeverity
-------------
16

(1 row(s) affected)

B. Usare ERROR_SEVERITY 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. La stored procedure restituisce informazioni sull'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)