创建 SQL 视图时我可以有临时表吗?
When creating a SQL view can i have temp tables?
我正在使用 Microsoft SQL -- 我需要创建一个提取大量数据的视图 - 大约 100 列,但为了提高效率,我必须按 3-5 过滤数据首先不同的加入。如果没有几个临时表,就没有干净的方法可以做到这一点。但是这个观点似乎不允许我。它只是说 "incorrect sytax near '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
...
)
在 SQL 服务器中,您不能在视图中有临时 table。正如 documentation 所说:
The SELECT clauses in a view definition cannot include the following:
. . .
- A reference to a temporary table or a table variable.
但是,您应该能够使用常见的 table 表达式 (CTE) 和子查询来表达您的观点。如果你确实发现你需要临时 tables,那么你可以使用 table 变量和一个 table 值函数。
不要创建视图 - 创建存储过程!
我正在使用 Microsoft SQL -- 我需要创建一个提取大量数据的视图 - 大约 100 列,但为了提高效率,我必须按 3-5 过滤数据首先不同的加入。如果没有几个临时表,就没有干净的方法可以做到这一点。但是这个观点似乎不允许我。它只是说 "incorrect sytax near '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
...
)
在 SQL 服务器中,您不能在视图中有临时 table。正如 documentation 所说:
The SELECT clauses in a view definition cannot include the following:
. . .
- A reference to a temporary table or a table variable.
但是,您应该能够使用常见的 table 表达式 (CTE) 和子查询来表达您的观点。如果你确实发现你需要临时 tables,那么你可以使用 table 变量和一个 table 值函数。
不要创建视图 - 创建存储过程!