@ViewName 不能是变量,必须是已知的名称!

解决方案 »

  1.   

    CREATE PROCEDURE CreateView
     @ViewName char(100)
    as
     begin
      exec('create view '+@ViewName+' as
        select * from tablename')
     end
      

  2.   

    CREATE PROCEDURE CreateView
     @ViewName char(100)
    as
     begin
      if not exists (select * from sysobjects where type = 'v' and name = @ViewName)
         exec('create view '+@ViewName+' as select * from tablename')
     end
      

  3.   

    谢谢,这个是解决了,但又出问题了。
    CREATE PROCEDURE CreateView
     @ViewName char(100),
     @tableName char(100)
    as
     begin
      exec('create view '+@ViewName+' as select * from '+ @tablename)
     end
    提示@tablename 不能用参数表示,该如何办呢、
      

  4.   

    除了下列 CREATE 陳述式以外,CREATE PROCEDURE 定義本身可以包括任何個數和型別的 SQL 陳述式。下列陳述式不得用於預存程序中的任何位置: 
    CREATE DEFAULT CREATE TRIGGER 
    CREATE PROCEDURE CREATE VIEW 
    CREATE RULE 
    稍微變通一下就可以了
    CREATE PROCEDURE CreateView
     @ViewName char(100),
     @tableName char(100)
    as
     begin
      exec('create view '+@ViewName+' as select * from '+ @tablename+'')
     end還不行的話,再@TableName 前面加""
      

  5.   

    --不可能,你是调用有问题:
    CREATE PROCEDURE CreateView
     @ViewName char(100),
     @tableName char(100)
    as
     begin
      exec('create view '+@ViewName+' as select * from '+ @tablename)
     end
    go
    --调用
    exec createview 'aaa','你的表名'
      

  6.   

    CREATE PROCEDURE CreateView
     @ViewName char(100),
     @tableName char(100)
    as
     begin
      exec('create view '+@ViewName+' as select * from '+ @tablename)
     end可以呀