当我向SQL Server添加View时,我收到此错误:
Incorrect syntax near the keyword 'DECLARE'
因为我必须首先声明一个tempTable Currency
,然后在Currecy
中插入一些值,然后将其检索到Join
到Items
表{{1}语句开始
我的问题是,创建视图是否禁止创建 TempTable还是插入?
非常感谢。
答案 0 :(得分:0)
视图不允许创建临时表。您需要使用存储过程
答案 1 :(得分:0)
是的,视图只是一个选择语句 - 它可能包含CTE或派生表。
如果您确实需要那些无法满足的程序逻辑,那么您可以使用多语句表值函数。
答案 2 :(得分:0)
SQL Server将CREATE VIEW定义如下:
CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ]
AS select_statement
...
这意味着在AS之后你必须使用一个select语句。 如果您愿意,可以使用各种技术来避免填写临时表。 CTE是一种相对简单的技术,可以像临时表一样使用ACT。
所以,而不是:
select *
into #tmp_currency
from Currency
...(alter table #tmp_currency)...
select *
from
othertable ot
join #tmp_currency tc
on tc.your_pk_col= ot.your_fk_col
......你可以用这个......
;with tmp_currency as (
select
*,
new_col = (whatever value you want to calculate)
from Currency)
select *
from
othertable ot
join tmp_currency tc
on tc.your_pk_col= ot.your_fk_col
视图创建是一项微不足道的任务:
create view yourviewname as
with tmp_currency as (
select
*,
new_col = (whatever value you want to calculate)
from Currency)
select *
from
othertable ot
join tmp_currency tc
on tc.your_pk_col= ot.your_fk_col