从SQL Server中的临时表创建临时视图

时间:2011-08-25 05:31:45

标签: sql-server view temporary

我有一个临时表,我想在这个临时表上创建一个临时视图。

有可能吗?

在下面的示例中,我希望#Top10Records是一个视图而不是一个表,以便我得到

select * into #Top10Records from (select top 10 * from #MytempTable)

3 个答案:

答案 0 :(得分:40)

您可以使用公用表表达式来执行此操作:

WITH Top10Records  AS 
( 
 select top 10 * from #MytempTable
) 
SELECT * FROM Top10Records 
GO

答案 1 :(得分:8)

不幸的是,SQL Server不支持这个:

  

Msg 4103,Level 15,State 1,Line 3
  “#someView”:不允许临时视图   消息4508,级别16,状态1,行6   临时表上不允许使用视图或函数。以'#'开头的表名   表示临时表。

答案 2 :(得分:0)

SQL Server不支持这样的临时视图,正如Daryl所说,公用表表达式可能是解决方法。但是,CTE的一个局限性是不能在批处理中的多个查询中使用它。 但是,您可以创建一个标准视图,根据需要使用它,然后只需在批处理/事务结束时将其删除即可。 (我知道OP问题是您是否可以创建一个临时视图,但这可能也可能适用-它需要更改架构,但对于所有意图和目的都需要一个临时视图。)