SQL Server: проблема с UDF - PullRequest
       1

SQL Server: проблема с UDF

1 голос
/ 26 марта 2011

У меня есть функция и оператор SELECT

CREATE FUNCTION dbo.fun_currentday ( @dt DATETIME)
RETURNS DATETIME
AS
BEGIN
    DECLARE @currentday DATETIME
    SET @currentday = DATEADD(dd, DATEDIFF(dd, 0, @dt), 0)
    RETURN (@currentday)
END
GO

DECLARE @pvm AS DATETIME
SET @pvm = GETDATE()

SELECT     'Last 7 days' AS Range, dbo.fun_currentday(@pvm) - 6 AS Stday, dbo.fun_currentday(@pvm) AS Endday

Все отлично работает, но когда я нахожу курсор над dbo.fun_currentday в операторе select, я получаю сообщение об ошибке:

Cannot find either column "dbo" or the user-defined function or aggregate "dbo.fun_currentday", or the name is ambiguous.

Где проблема?

Ответы [ 3 ]

4 голосов
/ 26 марта 2011

Intellisense / Подсветка ошибок всегда делает это для вновь создаваемых объектов. Используйте Ctrl + Shift + R для обновления локального кэша.

До

Before

* После 1014 * After

0 голосов
/ 26 марта 2011

Здесь все отлично работает с SQL Server 2008 Express.

Вы пытались запустить запрос в другой базе данных? Вы можете попытаться создать новую схему и создать в ней свой UDF.

Убедитесь, что у вас есть необходимые разрешения и правильная конфигурация схемы dbo.

0 голосов
/ 26 марта 2011

Ваша хранимая процедура должна где-то храниться, поэтому, если вы не укажете местоположение, она перейдет в базу данных по умолчанию (master). Поэтому вы должны назвать это как

SELECT 'Last 7 days' AS Range,master.dbo.fun_currentday(GETDATE()) - 6 AS Stday, master.dbo.fun_currentday(GETDATE()) AS Endday

отредактировано

Я проверил это, и я был не прав, это не всегда относится к материнской схеме. Он попадает в базу данных в контексте вашего беспокойства, поэтому, если ваша процедура создания была создана в запросе к корневой папке, она переходит к мастеру, но если вы создали ее в запросе тестовой базы данных, вы должны использовать test.dbo.fun_currentday(GETDATE()). Во избежание этого всегда указывайте базу данных как USE database_name GO CREATE FUNCTION dbo.fun_currentday

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