SQL-сервер при попытке доступа к функции udf, созданной с помощью dbo «Неверное имя объекта« dbo.Function_Client ».» - PullRequest
2 голосов
/ 14 февраля 2012

Привет! Я создал функцию udf в sqlserver 2008 ... когда я пытаюсь получить доступ, что это дает ошибку "Неверное имя объекта 'dbo.Function_Client" Я хочу вернуть количество записей из таблицы и назначить его переменной, чтобы он возвращал ... так что это скалярная функция ... внутри я реализовал, если еще логика ..

мой 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.

я назвал вот так select * from dbo.Clients ('AEP', 12, 'M')

но показывается ошибка Неверное имя объекта 'dbo.Function_NoOfClients'.

Я могу получить доступ к представлению через dbo.view1 ... но не этот udf ... любая проблема в моем UDF .. пожалуйста, помогите мне ...

1 Ответ

7 голосов
/ 14 февраля 2012

Используйте

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

Обратите внимание на разницу в использовании Табличные и скалярные функции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...