Ошибка пользовательской функции SQl Server всегда возвращает false (не работает), даже если ее компоненты работают - PullRequest
0 голосов
/ 18 января 2012

Я застрял на функции сервера sql, вставлен ниже .. Я пытаюсь вернуть логическое значение (бит).Я не буду утомлять вас описанием схемы таблицы и вложенными функциями udf, если кто-то не захочет ее видеть, поскольку, когда я тестирую два значения, которые я вычисляю по отдельности, это работает нормально.Я получаю значение в две локальные переменные и сравниваю их.Опять же, по отдельности они работают, но когда я запускаю функцию, я всегда получаю ложь (я получал истину в одном случае с тестовыми данными некоторое время назад, но не смог восстановить его некоторое время).Поэтому мне интересно, если моя ошибка в моих операторах присваивания ближе к концу?

    ALTER FUNCTION dbo.PricingVolDataAvailableToDateProvided
    (@Ticker char,
     @StartDate DATETIME2,
     @NumberOfDaysBack int)
    RETURNS bit
AS
    BEGIN

    DECLARE @Result bit

    DECLARE @TargetDate DATETIME2
    SET @TargetDate=dbo.TradingDateByStartDate(@NumberOfDaysBack, @StartDate)

    DECLARE @DataPointDateFromTable DATETIME2
    SET @DataPointDateFromTable= (SELECT TOP (1) TradeDate
        FROM (SELECT TOP (@NumberOfDaysBack) TradeDate, Symbol
        FROM tblDailyPricingAndVol
        WHERE (Symbol = @Ticker AND TradeDate <= @StartDate)
        ORDER BY TradeDate DESC) AS T2
        ORDER BY TradeDate ASC)

    IF @DataPointDateFromTable = @TargetDate
        SET @Result = 1
    ELSE
        SET @Result = 0

    RETURN @Result

    END

1 Ответ

1 голос
/ 18 января 2012

Запрос выглядит нормально, проблема может быть в функции dbo.TradingDateByStartDate, проверьте, имеют ли @DataPointDateFromTable и @TargetDate оба значения даты и времени, или если вы хотите сравнить только части даты, приведитеДАТА, как описано здесь .

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