我有一个临时表,我想在这个临时表上创建一个临时视图。
有可能吗?
在下面的示例中,我希望#Top10Records
是一个视图而不是一个表,以便我得到
select * into #Top10Records from (select top 10 * from #MytempTable)
答案 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问题是您是否可以创建一个临时视图,但这可能也可能适用-它需要更改架构,但对于所有意图和目的都需要一个临时视图。)