create view ...语句需要放在第一条,或者用EXEC动态执行。

解决方案 »

  1.   

    一般这种情况都要用EXEC动态执行,下面的代码我已测试过,你可以自己做相应的修改:CREATE procedure createview
           @type char(5)
    as
    declare @sqlstr varchar(255)
    if exists (select * from sysobjects where id = object_id(N'[dbo].[VIEW1]') and OBJECTPROPERTY(id, N'IsView') = 1)
           begin
           select @sqlstr = 'drop view VIEW1'
           exec(@sqlstr)
           endbegin
           select @sqlstr = 'create view VIEW1 as select * from A where 主键 = "' + @type + '"'
           exec(@sqlstr)
    end
      

  2.   

    这种情况一般都要用EXEC动态执行,下面的代码我已测试通过,你可以自己做相应的修改:CREATE procedure createview
           @type int
    as
    declare @sqlstr varchar(255)
    if exists (select * from sysobjects where id = object_id(N'[dbo].[VIEW1]') and OBJECTPROPERTY(id, N'IsView') = 1)
           begin
           select @sqlstr = 'drop view VIEW1'
           exec(@sqlstr)
           endbegin
           select @sqlstr = 'create view VIEW1 as select * from A where 主键 = ' + str(@type)
           exec(@sqlstr)
    end
      

  3.   

    @SQL = 'CREATE VIEW AAA()'EXEC (@SQL)
    在过程里面执行SQL语句要用EXEC ()