SQL服务器udf无法正常工作

时间:2012-01-17 23:20:37

标签: sql sql-server sql-server-2008

我现在整天都在一个相当简单的udf。它在下面。当我将select语句粘贴到查询中时,它按预期运行...当我执行整个函数时,我每次都得到“0”。如您所知,没有大量的调试选项,因此很难看到在执行时设置/未设置的值。它的基本目的是确保库存数据存在于每日定价表中。所以我可以查看我正在检查的数据天数,自动收报机以及要检查的最新交易日期。子查询得到了正确的交易日期,我使用“IN”从定价和vol表中提取数据......如果返回的数量小于我检查的天数,则没有好处。如果确实如此,我们就会开展业务。任何帮助都会很棒,我现在是个新手:

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 个答案:

答案 0 :(得分:1)

@Ticker char似乎很可疑。

如果你没有在参数定义中声明一个长度,它默认为char(1),所以你传递的代码很可能被静默截断 - 因此没有匹配。

SELECT TOP (100) PERCENT TradeDate ... ORDER  BY TradeDate DESC
派生表中的

是没有意义的,但不会影响结果。