2016-02-26 113 views
1

我有一個函數,並且在這個函數中,我想獲取函數的名字。我能怎麼做?我有嘗試:從自己獲取函數名稱

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

所以你試了一下,然後呢?錯誤?不正確的結果?如果是的話,返回什麼名字? –

回答

0

這是SQL Server的bug

也許我用另一種方式

+0

@Nguyen檢查我的答案,它應該工作:) –

0

嘗試用這種

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函數中(替換所有內容即可保留簽名以編輯函數)並執行。 –

0

什麼是你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的答案中的鏈接表明該錯誤僅適用於內聯表值函數。這個信息在這個問題上沒有。 –