生成一个表,表的列数是根据用户输入的值自动添加的。
如何写这个SQL语句,如果直接使用变量,就会出现错误。DECLARE @ColumnCount int
DECLARE @ColumnName varchar(10)
DECLARE @idx int
SET @ColumnCount = 10 --这个值可以变化,或者是用参数传入的
SET @idx = 1
WHILE @idx <= @ColumnCount
BEGIN
ALERT TABLE_A ADD 'C' + Convert(varchar(10),@idx) int --如何才能循环命名
@idx = @idx + 1
END

解决方案 »

  1.   

    exec('ALERT TABLE_A ADD ''C'' + Convert(varchar(10),'+@idx+') int ')
      

  2.   

    create table TABLE_A(ID int)
    go
    DECLARE @ColumnCount int
    DECLARE @ColumnName varchar(10)
    DECLARE @idx int
    SET @ColumnCount = 10 --这个值可以变化,或者是用参数传入的
    SET @idx = 1
    WHILE @idx <= @ColumnCount
    BEGIN
    exec(' alter table TABLE_A ADD C' +@idx+' int') --如何才能循环命名
    set @idx = @idx + 1
    END
    select * from TABLE_A--result
    ID          C1          C2          C3          C4          C5          C6          C7          C8          C9          C10         
    ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- (0 row(s) affected)
      

  3.   

    when use variant you have to execute using exec()