从自己获取函数名称

问题描述:

我有一个函数,并且在这个函数中,我想获取函数的名字。我能怎么做?我有尝试:从自己获取函数名称

CREATE FUNCTION dbo.func_test 
--.... 
-- get name function 
IF OBJECT_NAME(@@PROCID) LIKE '%_test%' 
SELECT @isTest = 1 
ELSE 
SELECT @isTest = 0 

OBJECT_NAME(@@PROCID)似乎支持存储过程,无法正常

+0

重复的http://计算器.com/questions/6034488 /当前正在执行的程序名称 – cameront

+0

我试过了,但没有正确 –

+0

所以你试了一下,然后呢?错误?不正确的结果?如果是的话,返回什么名字? –

这是SQL Server的bug

也许我用另一种方式

+0

@Nguyen检查我的答案,它应该工作:) –

尝试用这种

DECLARE @isTest INT 

IF EXISTS (
SELECT 1 FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'FUNCTION' AND ROUTINE_NAME LIKE '%_test%') 
BEGIN 
SELECT @isTest = 1 
END 
ELSE 
BEGIN 
SELECT @isTest = 0 
END 

SELECT @isTest 
+0

OP正在寻找当前正在执行的函数的名称。你的脚本检查一个函数是否存在某种特定的模式。这不一样。 –

+0

如何在我的_inline函数_中尝试您的代码? –

+0

只需将我的代码添加到您的func_test函数中(替换所有内容即可保留签名以编辑函数)并执行。 –

什么是你gettinng错误,它为我工作..

alter function dbo.uspo_test() 
returns int 
as 
begin 
declare @name varchar(20) 
set @name=object_name(@@procid) 
if (@name) like '%_test' 
return 1 

return 0 
end 

select dbo.uspo_test() 
--output 1 
+0

OP的答案中的链接表明该错误仅适用于内联表值函数。这个信息在这个问题上没有。 –