2012-01-17 13 views
0

我被困在一個SQL服務器功能,粘貼在下面..我試圖返回一個布爾(位)。除非有人願意看到它,否則我不會因爲表格模式描述和嵌套的udf功能而感到厭倦,因爲當我測試單獨計算的兩個值時,此工作正常。我得到兩個局部變量的值,並對它們進行比較。他們再一次單獨工作,但是當我運行這個函數時,我總是會得到錯誤的(在一段時間內我的測試數據是真實的,但一段時間以來一直不能重新創建)。所以我想知道我的錯誤是否在我接近尾聲的任務陳述中?SQl服務器自定義函數錯誤總是返回假(不工作),即使它的組件工作

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

查詢看起來不錯,問題可能出在dbo.TradingDateByStartDate功能,檢查一下@DataPointDateFromTable@TargetDate都有自己的價值觀的日期和時間部分,或者如果你麪包車只比較日期部分,將它們轉換成DATE如here所述。

+0

謝謝.. ..我仍然在使用它,雖然鑄造,但沒有運氣......是否有一種等效的方式來打印或從sql函數獲取某種中間輸出或反饋,因爲它執行? – StatsViaCsh 2012-01-17 21:00:41

+0

你可以打印你想要什麼: 'PRINT @DataPointDateFromTable PRINT @ TargetDate' 或 '選擇@DataPointDateFromTable SELECT @ TargetDate' 只是爲了檢查 – pistipanko 2012-01-17 21:03:57

+0

我得到錯誤「無效使用了副作用 - 影響運營商的「PRINT '在一個函數內「。 – StatsViaCsh 2012-01-17 21:07:17

相關問題