SQL сервер udf не работает - PullRequest
1 голос
/ 18 января 2012

Я весь день на довольно простом udf.Это ниже.Когда я вставляю оператор select в запрос, он выполняется так, как ожидалось ... когда я выполняю всю функцию, я каждый раз получаю "0".Как вы знаете, вариантов отладки не так много, поэтому трудно понять, какие значения устанавливаются / не устанавливаются во время выполнения.Основная цель этого - убедиться, что данные о запасах существуют в ежедневной таблице цен.Таким образом, я могу проверить, по скольким дням я проверяю данные, тикер и самую последнюю торговую дату для проверки.Подзапрос дает мне правильные даты торговли, и я использую «IN», чтобы извлечь данные из таблицы цен и объема ... если подсчет того, что возвращается, меньше, чем количество дней, которые я проверяю, то ничего хорошегоЕсли это произойдет, мы в бизнесе.Любая помощь была бы отличной, я новичок, который занимается в данный момент:

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

    DECLARE @Result bit
    DECLARE @RecordCount int

SET @RecordCount = (
    SELECT COUNT(TradeDate) AS Expr1
    FROM   (SELECT TOP (100) PERCENT TradeDate
            FROM   tblDailyPricingAndVol
            WHERE  ( Symbol = @Ticker )
                   AND ( TradeDate IN (SELECT TOP (@NumberOfDaysBack)
                                      CAST(TradingDate AS DATE) AS Expr1
                                       FROM   tblTradingDays
                                       WHERE  ( TradingDate <= @StartDate )
                                       ORDER  BY TradingDate DESC) )
            ORDER  BY TradeDate DESC) AS TempTable ) 

    IF @RecordCount = @NumberOfDaysBack
        SET @Result = 1
    ELSE
        SET @Result = 0

    RETURN @Result

    END

1 Ответ

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

@Ticker char кажется подозрительным.

Если вы не объявляете длину в определении параметра, то по умолчанию оно равно char(1), поэтому весьма вероятно, что переданные тикеры будут молча усечены, поэтому совпадений нет.1005 *

SELECT TOP (100) PERCENT TradeDate ... ORDER  BY TradeDate DESC

в производной таблице бессмысленно, но не повлияет на результат.

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