我有一个临时表,我想在这个临时表上创建一个临时视图。
可能吗?
在下面的例子中,我希望#Top10Records
是一个视图而不是一个表,以便我得到
select * into #Top10Records from (select top 10 * from #MytempTable)
不幸的是,SQL Server不支持这个:
Msg 4103,Level 15,State 1,Line 3 “#someView”:不允许临时视图。 Msg 4508,Level 16,State 1,Line 6 临时表上不允许使用视图或函数。以“#”开头的表名称表示临时表。
您可以使用Common Table表达式来执行此操作:
WITH Top10Records AS
(
select top 10 * from #MytempTable
)
SELECT * FROM Top10Records
GO
SQL Server不支持临时视图,如上所述,Daryl,Common Table Expression可能就是这样。但是,CTE的一个限制是它不能在批处理中的多个查询中使用。但是,您可以创建标准视图,根据需要使用它,然后在批处理/事务结束时将其删除。 (我知道OP问题是你是否可以创建一个临时视图,但这也可能适用 - 它需要一个模式更改,但是所有意图和目的都是一个临时视图)。