2011-05-17 61 views

回答

92

你可以試試這個:

SELECT OBJECT_NAME(@@PROCID) 

更新:這個命令仍然是SQL Server上有效的2016年

+0

它還SQL Express的2008 R2工作? – gbbosmiya 2013-11-20 06:29:00

+0

是的,它的確如此:http://technet.microsoft.com/en-us/library/ms174408.aspx – 2013-11-21 15:19:08

+4

值得注意的是,返回的值是SYSNAME類型。 – Buggieboy 2015-04-29 14:18:18

13

您可以使用OBJECT_NAME(@@PROCID)

返回對象標識符( ID) 當前的Transact-SQL模塊。 A Transact-SQL模塊可以是存儲的 過程,用戶定義的函數或 觸發器。

48
OBJECT_SCHEMA_NAME(@@PROCID) + '.' + OBJECT_NAME(@@PROCID) 
+6

+1模式很重要。 – 2014-10-07 21:25:02

+2

如果您在臨時Proc中使用它,它會返回NULL,無論是否檢索模式名稱。第一PROC是 「正常的」,第二是溫度,在該代碼:'BEGIN TRAN GO CREATE PROC utility.TempProc AS SELECT OBJECT_SCHEMA_NAME(@@ PROCID)+ + OBJECT_NAME(@@ PROCID) GO '。 EXEC utility.TempProc GO ROLLBACK GO BEGIN TRAN GO CREATE PROC效用。#TempProc AS SELECT OBJECT_SCHEMA_NAME(@@ PROCID)+ '' + OBJECT_NAME(@@ PROCID) GO EXEC效用。# TempProc GO ROLLBACK GO' – SAinCA 2016-08-04 22:14:23

2

在你有興趣在當前正在執行的臨時存儲過程的名稱,其中的特定情況下,可以通過得到它:

select name 
from tempdb.sys.procedures 
where object_id = @@procid