ERROR_NUMBER (Transact-SQL)

Возвращает номер ошибки, вызвавшей блок CATCH конструкции TRY…CATCH.

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

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.

Примеры

А.Использование функции ERROR_NUMBER в блоке CATCH

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

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, формирующая ошибку деления на ноль. Вместе с номером ошибки возвращаются сведения, касающиеся этой ошибки.

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)