sql server 2012中的alter命令

时间:2015-06-30 21:55:02

标签: sql sql-server alter

我正在尝试通过向现有视图添加新列来更改视图,我需要为其创建临时表。

现在我无法创建临时表,因为它说

 'ALTER VIEW' must be the first statement in a query batch.

我的代码段看起来像

 declare @temp_table table (x int,y xml,z int)
   insert into @temp_table (x,y,z)
      select(t.loc.value('(text()[1])','nvarchar(max)') from table1 
      Cross Apply ExtensionData.nodes('/xml/xml')  AS  t(Loc)
      where t.loc.value(@id,smallint)=1)

 Alter dbo.myview
  as 
  select
   existingcolumns,
   newcolumn from 
   existing_table et left join 
   temp_table tt on et.x=tt.x

请告知可以做得最好的事情。我有想法放弃视图并重新创建它,但理想情况下这不是最好的方法。

2 个答案:

答案 0 :(得分:2)

我不认为您可以在视图中使用临时表,因为视图的寿命比临时表长。

the documentation中,它表示&#34;视图定义中的SELECT子句不能包含以下内容:(...)对临时表或表变量的引用。&#34; < / p>

答案 1 :(得分:0)

您需要GO

declare @temp_table table (x int,y xml,z int)
   insert into @temp_table (x,y,z)
      select(t.loc.value('(text()[1])','nvarchar(max)') from table1 
      Cross Apply ExtensionData.nodes('/xml/xml')  AS  t(Loc)
      where t.loc.value(@id,smallint)=1)

GO

 Alter dbo.myview
  as 
  select
   existingcolumns,
   newcolumn from 
   existing_table et left join 
   temp_table tt on et.x=tt.x