exec ('select '+@列+' from '+@表)

解决方案 »

  1.   

    通过select元数据表select @列变量1=列1,@列变量2=列2 from 元数据表
    set @临时变量=@列变量1+','+@列变量2
    exec('select '+@临时变量+'from '+@表名变量)
      

  2.   

    举个例子示范一下,实际应用可能需要改很多东西,原理一样的。
    create table tab_scrib ( colname varchar(18),coltype varchar(18))
    go
    insert tab_scrib values ('id','int')
    insert tab_scrib values ('age','int')
    insert tab_scrib values ('date','datetime')
    go
    create proc proc_create_table 
    as
    begin
      declare @str varchar(800)
      select @str= 'create table test_table ( ' 
      select @str = @str + colname + '  ' + coltype + ',' from tab_scrib
      select @str = left(@str,len(@str)-1) + ')'
      exec (@str)
    end
    go
    select * from test_table
      

  3.   

    create table tab_scrib ( colname varchar(18),coltype varchar(18))
    go
    insert tab_scrib values ('id','int')
    insert tab_scrib values ('age','int')
    insert tab_scrib values ('date','datetime')
    go
    create proc proc_create_table 
    as
    begin
      declare @str varchar(800)
      select @str= 'create table test_table ( ' 
      select @str = @str + colname + '  ' + coltype + ',' from tab_scrib
      select @str = left(@str,len(@str)-1) + ')'
      exec (@str)
    end
    go
    proc_create_table 
    go
    select * from test_table
    关键就是用现有的表的内容拼成你需要的字符串。