Вызов пользовательской функции SQL - PullRequest
0 голосов
/ 14 июня 2011

Это похоже на основной вопрос, но я попробовал все!Я пишу пользовательскую функцию SQL для преобразования целых чисел в даты:

CREATE FUNCTION convert_to_date (@fin INT)
RETURNS DATE
AS
BEGIN
    DECLARE @fout DATE
    SET @fout = CASE WHEN @fin IN ('','99999999','0','1') THEN NULL
        ELSE CONVERT(DATE,CAST(@fin AS CHAR(8)))
        END
    RETURN @fout
END

SELECT dbo.convert_to_date(DtSurgDischarge) AS DischargeDate
FROM [TR_MASTER.registry].[dbo].[mgh_tumor]

Я получаю следующее сообщение об ошибке:

Сообщение 156, Уровень 15, Состояние 1, Процедураconvert_to_date, строка 16 Неверный синтаксис рядом с ключевым словом «SELECT».

Что я делаю не так?Чувствуется, что это должно быть очевидно.Спасибо всем!

1 Ответ

0 голосов
/ 14 июня 2011

Как минимум вам нужно GO после оператора END функции, если вы пытаетесь выполнить как функцию create, так и SELECT в одном скрипте - при условии вы используете SSMS для запуска скрипта, то есть.

CREATE FUNCTION convert_to_date (@fin INT)
RETURNS DATE
AS
BEGIN
    DECLARE @fout DATE
    SET @fout = CASE WHEN @fin IN ('','99999999','0','1') THEN NULL
        ELSE CONVERT(DATE,CAST(@fin AS CHAR(8)))
        END
    RETURN @fout
END

GO

SELECT dbo.convert_to_date(DtSurgDischarge) AS DischargeDate
FROM [TR_MASTER.registry].[dbo].[mgh_tumor]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...