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

问题描述 投票:20回答:3

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

可能吗?

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

select * into #Top10Records from (select top 10 * from #MytempTable)
sql-server view temporary
3个回答
9
投票

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

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


42
投票

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

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

0
投票

SQL Server不支持临时视图,如上所述,Daryl,Common Table Expression可能就是这样。但是,CTE的一个限制是它不能在批处理中的多个查询中使用。但是,您可以创建标准视图,根据需要使用它,然后在批处理/事务结束时将其删除。 (我知道OP问题是你是否可以创建一个临时视图,但这也可能适用 - 它需要一个模式更改,但是所有意图和目的都是一个临时视图)。

© www.soinside.com 2019 - 2024. All rights reserved.