私はudf内のテンポラリテーブルでselectクエリを実行しようとしています。私はこれが許可されていないことを示す文書を見つけることができませんが、tblDailyPricingAndVol
を#dailyPricingAndVolBySymbol
に変更すると、以下のストアドプロシージャはコンパイルされません(テンポラリテーブルはもちろんです。 。それが何かに影響を与える場合、事前に感謝を...)この機能を使用するストアドプロシージャをSQL Server 2008では、udf内のselect文の一時テーブルを参照できますか?
編集: UDFはちょうどそれを呼び出すストアドプロシージャのヘルパーであることを意味している..私はしようとしていますそれが実行されるたびに何千回も呼び出されるという事実のために一時テーブルを照会することができます。取得して集計するデータは数百万行のテーブルにあります。 100レコードを一時テーブルに格納することができます。これにより、機能が大幅に高速化され、それでも実行するにはかなりの時間がかかります。
ALTER FUNCTION dbo.PricingVolDataAvailableToDateProvided
(@Ticker nchar(10),
@StartDate DATE,
@NumberOfDaysBack int)
RETURNS nchar(5)
AS
BEGIN
DECLARE @Result nchar(5)
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 = 'True'
ELSE
SET @Result = 'False'
RETURN @Result
END
もう一度おねがいします...初心者フォローアップの質問、私はテンポラリテーブルを作成するストアドプロシージャでテーブルタイプを作成するのですか? – StatsViaCsh
+1はユーザ定義のテーブルタイプについて議論しています –
@StatsViaCsh - 私はそれを試したことはありませんが、うまくいくかどうかは疑問です。しかし、それを試しても害はありません。 –