添加SQL视图错误

时间:2015-07-16 07:32:28

标签: sql sql-server views

当我向SQL Server添加View时,我收到此错误:

Incorrect syntax near the keyword 'DECLARE' 

因为我必须首先声明一个tempTable Currency,然后在Currecy中插入一些值,然后将其检索到JoinItems表{{1}语句开始

我的问题是,创建视图是否禁止创建 TempTable还是插入?

非常感谢。

3 个答案:

答案 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