各位帮忙看一下下面一段Transact-SQL
IF (SELECT COUNT(a)
   FROM tableA
   WHERE a= '1999-1-1') > 0 
BEGIN
CREATE VIEW myView
AS
SELECT a,b,c
FROM tableA
WHERE (a= '1999-1-1' )
END
总是出错,提示 服务器: 消息 156,级别 15,状态 1,行 5
在关键字 'VIEW' 附近有语法错误。
不知道是否可以这样写,我实际上只是测试一下,实际产生的视图比这个要复杂很多,这里没有写出来

解决方案 »

  1.   

    IF (SELECT COUNT(a)
       FROM tableA
       WHERE a= '1999-1-1') > 0 
    BEGIN
    exec('
    CREATE VIEW myView
    AS
    SELECT a,b,c
    FROM tableA
    WHERE (a= ''1999-1-1'' )
    ')
    END
      

  2.   

    IF (SELECT COUNT(a)
       FROM tableA
       WHERE a= '1999-1-1') > 0 
    BEGIN
    declare @sql varchar(8000)
    set @sql ='CREATE VIEW myView
    AS
    SELECT a,b,c
    FROM tableA
    WHERE (a= ''1999-1-1'' )'
    exec(@sql)
    END
      

  3.   

    数据定义语言(DDL)CREATE/ALTER/DROP等,不能用于此种情况下。
      

  4.   

    create view需要的是第一条语句
    所以在这里可以通过exec来执行该语句~
      

  5.   

    CREATE VIEW myView
    AS
    SELECT a,b,c
    FROM tableA
    WHERE a= '1999-1-1' 
    go
    IF NOT EXISTS (SELECT 1
       FROM tableA
       WHERE a= '1999-1-1')
    DROP VIEW myView
      

  6.   

    create view,table 等要放在语句头所以可更改如下:IF (SELECT COUNT(a)
       FROM tableA
       WHERE a= '1999-1-1') > 0 
    BEGIN
    goCREATE VIEW myView
    AS
    SELECT a,b,c
    FROM tableA
    WHERE (a= '1999-1-1' )
    END