ERROR_SEVERITY (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Управляемый экземпляр SQL Azure Конечная точка аналитики аналитики Synapse Analytics Analytics (PDW)SQL Analyticsв Microsoft FabricХранилище в Microsoft Fabric

Эта функция возвращает значение, указывающее на уровень серьезности ошибки, которая вызвала выполнение блока CATCH конструкции TRY...CATCH.

Соглашения о синтаксисе Transact-SQL

Синтаксис

ERROR_SEVERITY ( )  

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Типы возвращаемых данных

int

Возвращаемое значение

При вызове в блоке CATCH, в котором произошла ошибка, функция ERROR_SEVERITY возвращает значение серьезности ошибки, вызвавшей выполнение блока CATCH.

Функция ERROR_SEVERITY возвращает значение NULL в случае вызова вне блока CATCH.

Замечания

Функцию ERROR_SEVERITY можно вызывать в любом месте области действия блока CATCH.

Функция ERROR_SEVERITY возвращает значение серьезности ошибки независимо от количества ее выполнений или от места ее вызова в области действия блока CATCH. В этом ее отличие от таких функций, как @@ERROR, которые возвращают номер ошибки только в той инструкции, которая непосредственно следует за инструкцией, вызвавшей ошибку.

Функция ERROR_SEVERITY, как правило, работает во вложенном блоке CATCH. Функция ERROR_SEVERITY возвращает значение серьезности ошибки, соответствующее области действия блока CATCH, который ссылался на данный блок CATCH. Например, блок CATCH внешней конструкции TRY...CATCH может содержать внутреннюю конструкцию TRY...CATCH. Во внутреннем блоке CATCH функция ERROR_SEVERITY возвращает значение серьезности ошибки, вызвавшей внутренний блок CATCH. Если функция ERROR_SEVERITY выполняется во внешнем блоке CATCH, она возвращает значение серьезности ошибки, вызвавшей внешний блок CATCH.

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

А. Использование ERROR_SEVERITY в блоке CATCH

В приведенном ниже примере показана хранимая процедура, которая создает ошибку деления на 0. Функция ERROR_SEVERITY возвращает значение серьезности этой ошибки.

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

Результирующий набор:

-----------

(0 row(s) affected)

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

(1 row(s) affected)

B. Использование ERROR_SEVERITY в блоке CATCH с другими инструментами обработки ошибок

В приведенном ниже примере показана инструкция SELECT, вызывающая ошибку деления на ноль. Хранимая процедура возвращает сведения об этой ошибке.

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  

Результирующий набор:

-----------

(0 row(s) affected)

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

(1 row(s) affected)

См. также

sys.messages (Transact-SQL)
ПОПРОБОВАТЬ... CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_NUМБ ER (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
Справочник по ошибкам и событиям (ядро СУБД)