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