3

我们为所有SQL存储过程和函数实现了一个全局错误记录器。当过程/函数遇到SQLEXCEPTIONorSQLWARNING时,我们调用全局错误记录器并执行GET STACKED DIAGNOSTICS语句。我们需要的部分数据是失败的过程名称。我没有在GET DIAGNOSTICS可用的返回值中看到这一点(ROUTINE_NAME并且ROUTINE_SCHEMA有条件地返回,我总是需要它)。

我们目前正在使用QWVRCSTK API,但如果提供此数据,我会假设 SQL 有一个方法。有谁知道我该怎么做?

4

2 回答 2

0
select @@ProcID  

返回当前 Transact-SQL 模块的对象标识符 (ID)。Transact-SQL 模块可以是存储过程、用户定义的函数或触发器。

从那里你可以:

select OBJECT_NAME(@@ProcID)  

这将返回对象的名称。

.

于 2013-04-20T18:16:38.000 回答
0

检索作业信息 (QUSRJOBI) API可以返回在作业中运行当前(最新)SQL 语句的对象的限定名称。使用格式JOBI0900访问作业的 SQL 信息。

您需要创建一个外部存储过程来调用 API。(如果您尝试将其作为 SQL 存储过程来执行,问题将是 SP 本身中的语句将是当前语句;并且您希望当前 SQL 位于调用过程中。)

调用此 SP 时,“当前”SQL 应该是调用过程中的 CALL 语句。(我希望这是有道理的。)

于 2014-04-13T10:41:02.617 回答