我现在整天都在一个相当简单的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
答案 0 :(得分:1)
@Ticker char
似乎很可疑。
如果你没有在参数定义中声明一个长度,它默认为char(1)
,所以你传递的代码很可能被静默截断 - 因此没有匹配。
SELECT TOP (100) PERCENT TradeDate ... ORDER BY TradeDate DESC
派生表中的是没有意义的,但不会影响结果。