我有一个临时表,我想在这个临时表上创建一个临时视图。
这可行吗?
在下面的示例中,我想让#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 不支持此操作:
Msg 4103,级别 15,状态 1,第 3 行:
"#someView": 不允许使用临时视图。
Msg 4508,级别 16,状态 1,第 6 行:
不能在临时表上使用视图或函数。以“#”开头的表名表示临时表。
SQL Server 不支持临时视图,正如Daryl所述,公共表达式(CTE)可能是正确的方法。然而,CTE 的一个限制是不能跨批处理使用。您可以创建一个标准视图,在需要时使用它,然后在批处理/事务结束时将其删除。(我知道 OP 的问题是是否可以创建临时视图,但这也可能适用 - 它需要架构更改,但对于所有实际目的来说是暂时的)。