2012-01-17 9 views
1

私は今、かなり単純なudfで終日です。それは以下の通りです。 selectステートメントをクエリに貼り付けると、期待どおりに実行されます...関数全体を実行すると、毎回「0」が返されます。あなたが知っているように、大量のデバッグオプションはないので、実行時にどのような値が設定されていないかを確認することは難しいです。その基本的な目的は、在庫データが日々の価格表に存在することを確認することです。だから、私はチェックしている日数のデータ、ティッカー、チェックする最新の取引日をチェックすることができます。サブクエリは正しい取引日を取得します。私は値と価格テーブルからデータを引き出すために "IN"を使用します...戻ってくるものの数がチェックしている日数よりも少ない場合はいいです。そうであれば、私たちはビジネスに取り組んでいます。すべてのヘルプは素晴らしいことだ、私はこの時点でパントされる初心者くさいよ:SQLサーバーudfが動作しない

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

@Ticker char容疑者と思われます。

パラメータ定義で長さを宣言しないと、デフォルトでchar(1)になります。したがって、渡されたテロップが黙って切り捨てられている可能性があります。

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

は、無意味ですが、結果には影響しません。

+0

回答ありがとうございますが、私はまだ髪を引っ張っています:) – StatsViaCsh

+0

コンパイラは100 pctものを削除しました。削除しました。それはそれを返します。 – StatsViaCsh

+0

よく ' ?もしそうなら、あなたは何もパラメータ定義を変更しましたか? 'tblDailyPricingAndVol.Symbol'のデータ型は何ですか?どうやってそれを呼びますか? –

関連する問題