Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Эта функция возвращает номер ошибки, которая вызвала выполнение блока CATCH конструкции TRY...CATCH.
Соглашения о синтаксисе Transact-SQL
Синтаксис
ERROR_NUMBER ( )
Типы возвращаемых данных
int
Возвращаемое значение
При вызове в блоке CATCH функция ERROR_NUMBER возвращает номер ошибки, вызвавшей выполнение блока CATCH.
Функция ERROR_NUMBER возвращает значение NULL в случае вызова вне блока CATCH.
Замечания
Функцию ERROR_NUMBER можно вызывать в любом месте области действия блока CATCH.
Функция ERROR_NUMBER возвращает соответствующий номер ошибки независимо от количества ее выполнений или от места ее вызова в области действия блока CATCH. В этом ее отличие от таких функций, как @@ERROR, которые возвращают номер ошибки только в той инструкции, которая непосредственно следует за инструкцией, вызвавшей ошибку.
Во вложенном блоке CATCH функция ERROR_NUMBER возвращает номер ошибки, соответствующий области действия блока CATCH, который ссылался на данный блок CATCH. Например, блок CATCH внешней конструкции TRY...CATCH может содержать внутреннюю конструкцию TRY...CATCH. Во внутреннем блоке CATCH функция ERROR_NUMBER возвращает номер ошибки, вызвавшей внутренний блок CATCH. Если функция ERROR_NUMBER выполняется во внешнем блоке CATCH, она возвращает номер ошибки, вызвавшей внешний блок CATCH.
Примеры
А. Использование функции ERROR_NUMBER в блоке CATCH
В приведенном ниже примере показана инструкция SELECT, вызывающая ошибку деления на ноль. Блок CATCH возвращает номер ошибки.
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() AS ErrorNumber;
END CATCH;
GO
Вот результирующий набор.
-----------
(0 row(s) affected)
ErrorNumber
-----------
8134
(1 row(s) affected)
B. Использование функции ERROR_NUMBER в блоке CATCH с другими средствами обработки ошибок
В приведенном ниже примере показана инструкция SELECT, вызывающая ошибку деления на ноль. Вместе с номером ошибки блок CATCH возвращает сведения о ней.
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_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
Справочник по ошибкам и событиям (ядро СУБД)