2012-09-05 51 views
0

我有一個嵌套在其他幾個存儲過程中的存儲過程。有沒有辦法告訴(在內部存儲過程中)哪個是調用者?@@ nestlevel = 1調用存儲過程的名稱

CREATE PROC int_proc 
AS 

SELECT int_name = OBJECT_NAME(@@PROCID) 
     ,ext_name = 'How can I tell which is the ext_proc name?' 
     ,nestlevel = @@NESTLEVEL 

GO 
CREATE PROC ext_proc1 
AS 
SELECT ext_name = OBJECT_NAME(@@PROCID),nestlevel = @@NESTLEVEL 
EXECUTE int_proc 

GO 
CREATE PROC ext_proc2 
AS 
SELECT ext_name = OBJECT_NAME(@@PROCID),nestlevel = @@NESTLEVEL 
EXECUTE int_proc 

GO 

EXEC ext_proc1 
EXEC ext_proc2 

我使用的是SQL-Server 2005的

+0

也許這可能有所幫助:http://stackoverflow.com/questions/148004/find-out-the-calling-stored-procedure-in-sql-server – Bridge

+0

對不起,你是對的,我錯過了。 – AleV

回答

0

沒有,沒有。 「堆疊」不適用於我們

爲什麼你需要這個?僅供參考,我將@@ PROCID傳遞給一個常見的錯誤記錄存儲過程。所以這有一些用途。但是本地沒有SQL

+0

我需要它來記錄porpouses。實際上,int_proc是一個觸發器,用於記錄表中特定字段的任何更改。由於有幾個更新表的過程,我想告訴哪一個被調用。 – AleV