从自己获取函数名称

时间:2016-02-26 06:08:17

标签: sql sql-server

我有一个函数,在这个函数里面,我想得到函数的名字。我能怎么做?我试过了:

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

OBJECT_NAME(@@PROCID)似乎是支持商店程序,而不是功能

3 个答案:

答案 0 :(得分:0)

这是SQL Server的bug

也许我用其他方式

答案 1 :(得分: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 

答案 2 :(得分:0)

你得到的错误是什么,对我有用..

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