【发布时间】:2011-11-03 08:58:58
【问题描述】:
我有一个临时表,我想在这个临时表上创建一个临时视图。
有可能吗?
在下面的示例中,我希望 #Top10Records 成为一个视图而不是一个表格,以便我得到 p>
select * into #Top10Records from (select top 10 * from #MytempTable)
【问题讨论】:
标签: sql-server view temporary
我有一个临时表,我想在这个临时表上创建一个临时视图。
有可能吗?
在下面的示例中,我希望 #Top10Records 成为一个视图而不是一个表格,以便我得到 p>
select * into #Top10Records from (select top 10 * from #MytempTable)
【问题讨论】:
标签: sql-server view temporary
SQL Server 不支持临时视图,正如上面 Daryl 所说,公共表表达式可能是要走的路。但是,CTE 的一个限制是它不能在一个批次中跨多个查询使用。 但是,您可以创建一个标准视图,根据需要使用它,然后在批处理/事务结束时将其删除。 (我知道 OP 的问题是您是否可以创建一个临时视图,但这也可能适用 - 它需要架构更改,但对于所有意图和目的来说都是暂时的)。
【讨论】:
很遗憾,SQL Server 不支持:
消息 4103,第 15 级,状态 1,第 3 行
“#someView”:不允许临时视图。
消息 4508,第 16 级,状态 1,第 6 行
临时表上不允许使用视图或函数。以“#”开头的表名 表示临时表。
【讨论】:
您可以使用公用表表达式来做到这一点:
WITH Top10Records AS
(
select top 10 * from #MytempTable
)
SELECT * FROM Top10Records
GO
【讨论】: