SQL Server:如果不存在则创建视图不起作用

时间:2016-09-21 05:36:57

标签: sql-server sql-server-2008

我正在尝试使用以下方式创建视图:

IF OBJECT_ID('dbo.zestaw_zam_fak') IS NULL 
   CREATE VIEW AS 
       SELECT .... 
       FROM .... 
       UNION 
       SELECT ..... 
       FROM.... 
       UNION 
       SELECT ... 
       FROM ... 

但是我收到了一个错误:

  

无法解析查询文本
  关键字VIEW附近的语法不正确。

如果没有语句'IF OBJECT_ID('dbo.zestaw_zam_fak') IS NULL,则视图会正确创建。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

您必须将CREATE语句包装到EXEC('your create statement')中。否则它将无法在IF

中使用

示例:

IF OBJECT_ID('dbo.vwCity') IS NULL
BEGIN   
    EXECUTE('CREATE VIEW [dbo].[vwCity]
    AS
    SELECT  *
    FROM  dbo.City')
END

答案 1 :(得分:1)

IF Object_ID('dbo.TestView') IS NOT NULL
    DROP VIEW dbo.TestView;

GO

CREATE VIEW dbo.TestView
   as

SELECT 1 AS Col1;

或者,您可以使用动态SQL。