Текущее имя исполняемой процедуры - PullRequest
81 голосов
/ 17 мая 2011

Можно ли получить имя текущей хранимой процедуры в MS SQL Server?Может быть, есть какая-нибудь системная переменная или функция типа GETDATE()?

Ответы [ 4 ]

125 голосов
/ 17 мая 2011

Вы можете попробовать это:

SELECT OBJECT_NAME(@@PROCID)

Обновление: Эта команда все еще действует в SQL Server 2016.

64 голосов
/ 18 июня 2013
OBJECT_SCHEMA_NAME(@@PROCID) + '.' + OBJECT_NAME(@@PROCID)
14 голосов
/ 17 мая 2011

Вы можете использовать OBJECT_NAME (@@ PROCID)

Возвращает идентификатор объекта (ID) текущего модуля Transact-SQL.Модуль Transact-SQL может быть хранимой процедурой, пользовательской функцией или триггером.

5 голосов
/ 15 февраля 2017

В конкретном случае, когда вас интересует имя выполняемой в данный момент временной хранимой процедуры, вы можете получить ее через:

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

Нельзя использовать принятый ответ в SQL Server, чтобы найти имя выполняемой в данный момент временной хранимой процедуры:

create procedure #p
as
select object_name(@@PROCID) as name
go
exec #p


name
--------------------------------------------------------------------------------------------------------------------------------
NULL

(1 row affected)
...