视图名可以用参数,但是表名这样不行,要用动态SQL语句

解决方案 »

  1.   

    我COPY到MSSQL里创建了这个SP的,
    再在分析器里去执行,是正常的呀,完全成功不用如果你给的@tablename参数指定的表名不存在就会出错
    你看看是不是其他的错误的,你的CODE没错
      

  2.   

    没问题
    我测试可以
     declare @ViewName char(100),
     @tablename char(100)
     
     set @ViewName='v_aaa'
    set @tablename='a'
      exec('create view '+@ViewName+' as select * from '+ @tablename)
      

  3.   

    试过了,没问题,应该是你的参数@tablename赋值对象数据库中不存在。
      

  4.   

    楼上这样动态执行应该是没有问题的
    我认为参数最好定义成varchar
      

  5.   

    这样在order by 中为何不行?
    create view V1
    as 
    select t1.f1,t2.f2 from t1,t2 order by t1.f1
    提示:
    除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。
      

  6.   

    create view V1
    as 
    select top 10000000 t1.f1,t2.f2 from t1,t2 order by t1.f1
      

  7.   

    不过你没有必要这样做
    你完全可以在调用的时候order by