创建SQL视图时,我可以拥有临时表吗?

时间:2015-01-06 20:54:04

标签: sql sql-server view

我正在使用Microsoft SQL - 我需要创建一个可以提取大量数据的视图 - 大约100列,但为了提高效率,我必须先在3-5个不同的连接上过滤数据。没有几个临时表,没有干净的方法来做到这一点。但这种观点似乎不允许我。它只是说"不正确的sytax附近' AS'"

我的代码看起来像这样

CREATE VIEW [dbo].[LV_ViewName] AS

declare @table1 table
(
customer_no int,
name varchar(100),
...
)

其中几个

通过

declare #work table
(
customer_no int,
name varchar(100),
--    all encompasing data
...
)

2 个答案:

答案 0 :(得分:1)

在SQL Server中,您不能在视图中拥有临时表。正如documentation所说:

  

视图定义中的SELECT子句不能包含以下内容:

     

。 。

     
      
  • 对临时表或表变量的引用。
  •   

但是,您应该能够使用公用表表达式(CTE)和子查询来表达您的视图。如果您确实发现需要临时表,那么您可以使用表变量和表值函数。

答案 1 :(得分:-2)

不要创建视图 - 创建存储过程!