Sql server 更新SQL Server 2008视图
我正在尝试更新SQL Server 2008视图,当我运行以下脚本时,出现以下错误Sql server 更新SQL Server 2008视图,sql-server,sql-server-2008,Sql Server,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(没有If和括号),结果将显示“视图” 结果: TABLE_N
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(没有If和括号),结果将显示“视图”
结果:
TABLE_NAME
oas_AppVend
有什么想法吗?这个错误仅仅是因为您编写的脚本不够。SQL引擎仍然需要知道在if之后要做什么
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME = 'oas_AppVend')
BEGIN
/* VALID SQL STATEMENT MUST EXIST HERE */
END
注意:即使是上面的代码也会返回一个错误,直到您将一个有效的sql语句放入我注意到的块中。如果您对一个else有期望的结果,它看起来会是这样的,但是在您实际完成它之前,这不是一个有效的语句
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
您可以发布整个SQL脚本吗?需要更多信息,如IF语句之前/之后…我是否可以将其创建为一个过程,以便用户可以运行它,或者作为程序员,我是否需要每次都进入并运行它?最后一个问题,如果基表中有记录,视图是否应该自动更新更改?再次感谢。KenYes,上面提供的代码示例可以在存储过程中使用。您可以将任何其他有效的SQL语句放入标识的块中,只要运行该过程的用户具有权限,它就可以正常工作。对于您的第二个问题,是的,视图只是一个存储的select语句……因此,表中的任何内容ew基于任何时候运行时都会反映在视图中的内容。
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