exec('alter table table_name  column1  type;
      alter table table_name  column2  type;
      alter table table_name  column3  type;
      alter table table_name  column4  type;
      alter table table_name  column5  type;
      .
      .
      .
     ')

解决方案 »

  1.   

    好象不能用事务,每一个修改都加上条件就是了,这样反复执行多次都没有问题:
    if exists(select * from syscolumns where id=object_id(N'表名') and name='列名')
      EXEC sp_rename '表名.列名', '新列名', 'COLUMN'
    if exists(select * from syscolumns where id=object_id(N'表名') and name='新列名')
      alter table 表名 alter column 新列名 int
      

  2.   

    是不是改列名只能用sp_rename,能否用alter table,怎么用?
      

  3.   

    顺便一起问吧:
    update t set col=col + 'sdgaga....' where ...
    但col是ntext型,提示错误,有没有办法不读出原来的col,直接这样update实现这样的结果
      

  4.   

    用alter table的话,先drop后add,不如直接用sp_rename.
    'sdgaga....'进行强制类型转换