Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Эта функция возвращает имя хранимой процедуры или триггера, в котором возникает ошибка, если эта ошибка вызвала CATCH выполнение блока TRY...CATCH конструкции.
- Возвращаемые версии SQL Server 2017 (14.x) и более поздних версий
schema_name.stored_procedure_name - Возврат базы данных SQL Server 2016 (13.x) и Базы данных SQL Azure
stored_procedure_name
Соглашения о синтаксисе Transact-SQL
Синтаксис
ERROR_PROCEDURE ( )
Типы возвращаемых данных
nvarchar(128)
Возвращаемое значение
При вызове CATCH в блоке ERROR_PROCEDURE возвращает имя хранимой процедуры или триггера, в котором возникла ошибка.
ERROR_PROCEDURE возвращает, NULL если ошибка не произошла в хранимой процедуре или триггере.
ERROR_PROCEDURE возвращается NULL при вызове за пределами CATCH области блока.
Замечания
ERROR_PROCEDURE поддерживает вызовы в любом месте области CATCH блока.
Функция ERROR_PROCEDURE возвращает имя хранимой процедуры или триггера, в которых произошла ошибка, независимо от числа вызовов функции или места ее вызова в области действия блока CATCH. Этот результат контрастирует с функцией, например @@ERROR, которая возвращает только номер ошибки в инструкции сразу после ошибки, которая вызывает ошибку.
Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)
А. Использование ERROR_PROCEDURE в блоке CATCH
В приведенном ниже примере показана хранимая процедура, которая создает ошибку деления на 0. Функция ERROR_PROCEDURE возвращает имя хранимой процедуры, в которой произошла ошибка.
-- Verify that the stored procedure does not already exist.
IF OBJECT_ID('usp_ExampleProc', 'P') IS NOT NULL
DROP PROCEDURE usp_ExampleProc;
GO
-- Create a stored procedure that
-- generates a divide-by-zero error.
CREATE PROCEDURE usp_ExampleProc
AS
SELECT 1 / 0;
GO
BEGIN TRY
-- Execute the stored procedure inside the TRY block.
EXECUTE usp_ExampleProc;
END TRY
BEGIN CATCH
SELECT ERROR_PROCEDURE() AS ErrorProcedure;
END CATCH;
GO
Вот результирующий набор.
-----------
(0 row(s) affected)
ErrorProcedure
--------------------
usp_ExampleProc
(1 row(s) affected)
В. Использование ERROR_PROCEDURE в блоке CATCH с другими средствами обработки ошибок
В приведенном ниже примере показана хранимая процедура, которая создает ошибку деления на 0. Наряду с именем хранимой процедуры, в которой произошла ошибка, возвращаются сведения об ошибке.
-- Verify that the stored procedure does not already exist.
IF OBJECT_ID('usp_ExampleProc', 'P') IS NOT NULL
DROP PROCEDURE usp_ExampleProc;
GO
-- Create a stored procedure that
-- generates a divide-by-zero error.
CREATE PROCEDURE usp_ExampleProc
AS
SELECT 1 / 0;
GO
BEGIN TRY
-- Execute the stored procedure inside the TRY block.
EXECUTE usp_ExampleProc;
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_MESSAGE() AS ErrorMessage,
ERROR_LINE() AS ErrorLine;
END CATCH;
GO
Вот результирующий набор.
-----------
(0 row(s) affected)
ErrorNumber ErrorSeverity ErrorState ErrorProcedure ErrorMessage ErrorLine
----------- ------------- ----------- ---------------- ---------------------------------- -----------
8134 16 1 usp_ExampleProc Divide by zero error encountered. 6
(1 row(s) affected)