适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
分析平台系统 (PDW)
Microsoft Fabric 中的 SQL 分析端点
Microsoft Fabric 中的仓库
如果此错误导致 CATCH
构造块 TRY...CATCH
执行,则此函数将返回发生错误的存储过程或触发器的名称。
- SQL Server 2017 (14.x) 及更高版本返回
schema_name.stored_procedure_name
- SQL Server 2016 (13.x) 和 Azure SQL 数据库返回
stored_procedure_name
语法
ERROR_PROCEDURE ( )
返回类型
nvarchar(128)
返回值
在块中 CATCH
调用时, ERROR_PROCEDURE
返回生成错误的存储过程或触发器的名称。
ERROR_PROCEDURE
如果 NULL
错误未在存储过程或触发器中发生,则返回。
ERROR_PROCEDURE
在 NULL
块范围 CATCH
外调用时返回。
备注
ERROR_PROCEDURE
支持在块范围内的任何位置调用 CATCH
。
无论 ERROR_PROCEDURE
运行多少次或在 CATCH
块作用域内的任意位置运行,它都将返回出现错误的存储过程或触发器的名称。 此结果与类似 @@ERROR
函数形成鲜明对比,该函数仅在导致错误的函数之后的语句中返回错误号。
示例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
答: 在 CATCH 块中使用ERROR_PROCEDURE
下面的示例显示生成被零除错误的存储过程。
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)
B. 在其他错误处理工具的 CATCH 块中使用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_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)