我有一个临时表,我想在这个临时表上创建一个临时视图。
是否可以?
在下面的示例中,我想#Top10Records
成为一个视图而不是一个表,以便我得到
select * into #Top10Records from (select top 10 * from #MytempTable)
我有一个临时表,我想在这个临时表上创建一个临时视图。
是否可以?
在下面的示例中,我想#Top10Records
成为一个视图而不是一个表,以便我得到
select * into #Top10Records from (select top 10 * from #MytempTable)
您可以使用公用表表达式来执行此操作:
WITH Top10Records AS
(
select top 10 * from #MytempTable
)
SELECT * FROM Top10Records
GO
不幸的是,SQL Server 不支持这一点:
消息 4103,级别 15,状态 1,第 3 行
“#someView”:不允许临时视图。
Msg 4508, Level 16, State 1, Line 6
临时表上不允许视图或函数。以“#”开头的表名表示临时表。
SQL Server 不支持临时视图,正如上面 Daryl 所说,公共表表达式可能是要走的路。但是,CTE 的一个限制是它不能在一个批次中跨多个查询使用。但是,您可以创建一个标准视图,根据需要使用它,然后在批处理/事务结束时将其删除。(我知道 OP 的问题是您是否可以创建一个临时视图,但这也可能适用 - 它需要一个架构更改,但对于所有意图和目的来说都是一个临时的)。