如果Proc A执行Proc B,是否有一种方法让Proc B查询它是由A调用而不是有一个参数,其中A传递B其ID?
每个请求:我对此感兴趣的原因是多方面的1)一般知识,我敢肯定,如果可以做到这将涉及巧妙地使用一些系统表/变量,可以帮助我做其他事情在路上.
2)正如其他人所提到的,记录/审核.我想创建一个记录不需要参数的开始,结束和消息条目的过程,并接受用户指定消息的一个可选参数.这将允许人们简单地将一个exec放在一个proc的顶部和底部以使其工作,审计程序将自己找出其余部分.
我知道这些信息可以在日志文件中找到,但解析这些信息并将它们提供给用户并不是那么简单,而这样可以轻松访问该基本信息.
3)与信号量一起使用这样的通用过程可以确保不管会话/事务等如何不同时执行相关过程.
使用这样的参数:
CREATE PROCEDURE ParentProcedure
AS
DECLARE @ProcID int
SET @ProcID=@@PROCID
EXEC ChildProcedure @ProcID
RETURN 0
go
Run Code Online (Sandbox Code Playgroud)
和这个...
CREATE PROCEDURE ChildProcedure
(
@ProcID int=null --optional
)
AS
if @ProcID IS NOT NULL
BEGIN
PRINT 'called by '+OBJECT_NAME(@ProcID)
END
RETURN 0
go
Run Code Online (Sandbox Code Playgroud)
你为什么想这么做?
AFAIK,过程 B 无法知道是谁调用了它。
编辑:由于 KM 表明这是可能的(根据代码),我有兴趣了解这样做背后的原因。您也可以将其添加到您的问题中来发布吗?
| 归档时间: |
|
| 查看次数: |
3376 次 |
| 最近记录: |