2012-06-21 61 views
1

我试图更新SQL Server 2008中视图,当我运行下面的脚本,我得到了下面的错误。更新SQL Server 2008中查看

IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME = 'oas_AppVend') 

错误:

Msg 102, Level 15, State 1, Line 2 
Incorrect syntax near ')'. 

如果我运行sript像下面(没有,如果没有括号),结果显示我的“VIEW”

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME = 'oas_AppVend' 

结果:

TABLE_NAME 
oas_AppVend 

有什么建议吗?

+0

你能后整个SQL脚本? – EkoostikMartin

+0

需要更多的信息,像以前一样/ IF语句后... –

回答

2

该错误仅仅是因为你写这剧本是不够的。在if后,SQL引擎仍然需要知道该怎么做。

IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME = 'oas_AppVend') 
BEGIN 
    /* VALID SQL STATEMENT MUST EXIST HERE */ 
END 

注:连码,直到你把一个有效的SQL语句到那里我已经注意到块的上方会返回一个错误。如果你对其他方面有期望的结果,它会看起来像这样,但是,直到你真正完成它,这不是一个有效的陈述。

IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME = 'oas_AppVend') 
BEGIN 
    /* VALID SQL STATEMENT MUST EXIST HERE */ 
END 
ELSE 
BEGIN 
    /* DO SOMETHING ELSE */ 
END 
+0

我能创造这个作为一个过程,以便用户可以运行它,否则我就当程序员需要去在每次运行呢?最后一个问题,如果视图在基表中的记录改变时自动更新?再次感谢。 肯 –

+0

是,以上提供的代码示例可以在存储过程中使用。您可以将任何其他有效的SQL语句放在已标识的块中,只要运行proc的用户拥有权限,就可以正常工作。为了您的第二Q是的,一个视图只是一个存储select语句...所以无论是在表视图是基于会是什么反映在它运行的视图随时随地。 – RThomas