sql中一个表的列是动态变化的,请问可不可以动态添加参数字段
例如这种语句 exec ('alter table tbl_MonthTable3 add ' +@DateMonth+' nvarchar(25)')
虽然语法没有问题,但是执行没有效果。

解决方案 »

  1.   

    你的@DateMonth是数字还是字符串啊 
      

  2.   

    create table tbl_MonthTable3(id int identity)declare @DateMonth as varchar(10)
    select @DateMonth='C1'
    exec ('alter table tbl_MonthTable3 add ' +@DateMonth+' nvarchar(25)')
    select * from tbl_MonthTable3id          C1
    ----------- -------------------------(0 行受影响)没问题啊
      

  3.   

    @DateMonth 是一个可变字符串
      

  4.   

    @DateMonth是传到存储过程中的参数
      

  5.   

    修改表结构需要你的数据库登陆账户具有相应的权限,
    参见MSSQL2000 服务器角色和数据库角色关系:
    http://hi.baidu.com/idragonet/blog/item/e2d0670e5777b7cf7acbe118.html
      

  6.   

        sqlparameter paramDateMonth = new sqlparameter("@DateMonth", sqldatatype.datetime);
        SqlCommand SCommand = new SqlCommand(); 
        SCommand.Connection = new sqlconnection("你的连接字符串"); 
        SCommand.CommandText = "alter table tbl_MonthTable3 add ' +@DateMonth+' nvarchar(25)"; 
        SCommand.Parameters.Add(paramDateMonth);
        SCommand.Connection.Open(); 
        SCommand.ExecuteNonQuery();
        SCommand.Connection.Close();
        
        datatime dt = paramDateMonth.value.tostring();
      

  7.   

    exec ('alter table tbl_MonthTable3 add ''' +@DateMonth+''' nvarchar(25)')
      

  8.   

    declare @DateMonth nvarchar(25)
    set @DateMonth = Convert(varchar(10),@startTime,120)
    exec ('alter table tbl_MonthTable3 add ' +@DateMonth+' nvarchar(25)')
    刚刚测试发现参数是像日期这种字符串"2008-06"不能直接添加,不知道怎么解决
      

  9.   

    我输入的参数是datdatetime类型的,这种如果在外部处理成'[日期]'这种格式执行没问题,但是不知道在存储过程内部有没有办法处理呢,9L的方法提示有错误,谢谢解答
      

  10.   

    exec('alter table Tb add '+cast(@DateMonth as varchar))
    应该为字段名