ERROR_SEVERITY (Transact-SQL)
Возвращает серьезность ошибки, вызвавшей запуск блока CATCH конструкции TRY...CATCH.
Синтаксис
ERROR_SEVERITY ( )
Типы возвращаемых данных
int
Возвращаемое значение
При вызове в блоке CATCH возвращает серьезность сообщения об ошибке, вызвавшего запуск блока CATCH.
Возвращает NULL, если вызов происходит вне области блока CATCH.
Замечания
ERROR_SEVERITY может быть вызвана в любом месте в пределах области блока CATCH.
ERROR_SEVERITY возвращает серьезность ошибки независимо от того, сколько раз она выполняется или где именно она выполняется в пределах области блока CATCH. В этом заключается ее отличие от таких функций, как @@ERROR, которые возвращают номер ошибки только в инструкции, следующей за той, которая вызвала ошибку, или в первой инструкции блока CATCH.
Во вложенных блоках CATCH функция ERROR_SEVERITY возвращает серьезность ошибки специфично для области блока CATCH, в котором она представлена. Например, блок CATCH внешней конструкции TRY...CATCH мог содержать вложенную конструкцию TRY...CATCH. В пределах вложенного блока CATCH функция ERROR_SEVERITY возвращает серьезность ошибки, вызвавшей выполнение вложенного блока CATCH. Если функция ERROR_SEVERITY запускается во внешнем блоке CATCH, она возвращает серьезность ошибки, вызвавшей выполнение внешнего блока CATCH.
Примеры
А. Использование ERROR_SEVERITY в блоке CATCH
В следующем примере приведена инструкция SELECT, вызывающая ошибку деления на ноль. Возвращается серьезность ошибки.
USE AdventureWorks2008R2;
GO
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_SEVERITY() AS ErrorSeverity;
END CATCH;
GO
Б. Использование ERROR_SEVERITY в блоке CATCH с другими инструментами обработки ошибок
В следующем примере приведена инструкция SELECT, вызывающая ошибку деления на ноль. Вместе с серьезностью возвращаются другие сведения относительно ошибки.
USE AdventureWorks2008R2;
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
См. также