Поделиться через


ERROR_SEVERITY (Transact-SQL)

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

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

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

Синтаксис

ERROR_SEVERITY ( )

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

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)

В. Использование 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)