Имя текущей исполняемой процедуры


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

4 73

4 ответа:

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

SELECT OBJECT_NAME(@@PROCID)

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

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

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

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

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

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)