我想在udf中的临时表上运行选择查询。我找不到文档说明这是不允许的,但是当我将tblDailyPricingAndVol
更改为#dailyPricingAndVolBySymbol
(当然是我的临时表)时,下面的存储过程不会编译。临时表创建在更高级别(在存储过程中在提前使用此功能)如果影响什么...谢谢存储过程SQL Server 2008,我可以在udf中的select语句中引用临时表吗?
编辑: 的UDF意味着仅仅是调用它的存储过程的辅助...我试着使用它来查询一个临时表,因为它每次运行时会被调用几千次,它检索并聚合的数据在一个包含数百万行的表中,所以我将这些数据分成几个百个记录放入临时表中,这将大大提高功能,尽管它仍然需要一段时间才能运行。
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 2012-02-18 17:12:59
+1用于讨论用户定义的表类型 – 2012-02-18 17:31:19
@StatsViaCsh - 我从来没有尝试过,但我怀疑这将工作。尽管如此,尝试它并没有什么坏处。 – 2012-02-18 18:25:56