SQL服务器在尝试访问使用dbo“无效对象名称'dbo.Function_Client'创建的udf函数时。”

时间:2012-02-14 10:58:15

标签: sql-server-2008-r2

您好我在sqlserver 2008中创建了一个udf函数... 当我尝试访问它时会出错 “无效的对象名称'dbo.Function_Client” 我想从表中返回记录的数量,并将其分配给变量以返回...所以它是一个标量函数......我已经实现了if else逻辑..

我的udf

CREATE FUNCTION [dbo].[Function_Clients] (@ClientAlias varchar(10) ,
  @TimePeriod int, @TypeOfTimePeriod varchar(1))

RETURNS INT
AS
BEGIN
  DECLARE @COUNT INT;

  IF(@ClientAlias='AEP' AND @TypeOfTimePeriod ='M')
     Set @COUNT =  (SELECT DISTINCT COUNT(*) AS 'NO_AEP' from dbo.Engagement INNER JOIN
        dbo.Client ON dbo.Engagement.ClientIdentifier = dbo.Client.ClientIdentifier 
    WHERE (dbo.ClientInvolvementRole.ClientInvolvementID = '1356790AERTY') 
    AND (CONVERT(datetime, dbo.Engagement.EndDate, 103) 
    <= CONVERT(datetime, DATEADD(MONTH, @TimePeriod , GETDATE()), 103))  


ELSE

---SAME ABOVE CODE BUT REPLACING MONTH WITH DAY AS 
---"DATEADD(DAY,@TimePeriod , GETDATE()), 103)" IN WHERE CONDITION  .

...if else (for various client alias)

RETURN @COUNT;  
END
GO

对于每个@clientalias我想根据我在@TypeOfTimePeriod中的输入添加月份和部分。 例如,@ TypeOfTimePeriod ='M'表示月份,或者'D'表示要添加到dateadd部分的日期。

我从dbo.Clients('AEP',12,'M')中调用了这样的select *

但显示错误 无效的对象名称'dbo.Function_NoOfClients'。

我可以使用dbo.view1访问该视图...但不是这个udf ... 我的udf中的任何问题......请帮助我...

1 个答案:

答案 0 :(得分:7)

使用

SELECT dbo.Clients('AEP',12,'M')

注意Table valued and scalar functions

的使用差异