是否可以在MS SQL Server中获取当前存储过程的名称?可能是有任何系统变量或功能像GETDATE()
?当前正在执行的过程名称
回答
你可以试试这个:
SELECT OBJECT_NAME(@@PROCID)
更新:这个命令仍然是SQL Server上有效的2016年
返回对象标识符( ID) 当前的Transact-SQL模块。 A Transact-SQL模块可以是存储的 过程,用户定义的函数或 触发器。
OBJECT_SCHEMA_NAME(@@PROCID) + '.' + OBJECT_NAME(@@PROCID)
+1模式很重要。 – 2014-10-07 21:25:02
如果您在临时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
在你有兴趣在当前正在执行的临时存储过程的名称,其中的特定情况下,可以通过得到它:
select name
from tempdb.sys.procedures
where object_id = @@procid
它还SQL Express的2008 R2工作? – gbbosmiya 2013-11-20 06:29:00
是的,它的确如此:http://technet.microsoft.com/en-us/library/ms174408.aspx – 2013-11-21 15:19:08
值得注意的是,返回的值是SYSNAME类型。 – Buggieboy 2015-04-29 14:18:18