Tsql 获取动态脚本

Tsql 获取动态脚本,tsql,Tsql,表名为sts.学生 列名称'studentid,studentfname,studentlname' 我想使用columnname和tableName获取动态脚本,以便将数据插入到新表“tabdata”中。我该怎么办 对不起,我听不清你说的话。你想要这个吗 Create table tabdata(header1 varchar(100), header2 varchar(100), header3 varchar(100),header4 varchar(100),header5 varcha

表名为sts.学生 列名称'studentid,studentfname,studentlname'


我想使用columnname和tableName获取动态脚本,以便将数据插入到新表“tabdata”中。我该怎么办

对不起,我听不清你说的话。你想要这个吗

Create table tabdata(header1 varchar(100), header2 varchar(100),
header3 varchar(100),header4 varchar(100),header5 varchar(100))

declare @tableName varchar(100)
declare @columnname varchar(max)
declare @target_columnname varchar(max)
declare @sql varchar(max)

set @tableName='sts.students' 

set @columnname='studentid,studentfname,studentlname' 

set @target_columnname= (stuff((select ',' +[Name] from (
Select row_number()over(order by Name)as rn ,Name
FROM SysColumns Where id=Object_Id('tabdata')) a 
where rn<=len(@columnname)-len(replace(@columnname, ',', ''))+1
FOR XML PATH('')),1,1,''))

SELECT @sql = 'INSERT INTO tabdata(' +
    STUFF ((
        SELECT ',' + @target_columnname + ''
        FOR XML PATH('')), 1, 1, '') +
    ') select ' +@columnname +' from '+@tableName
print (@sql)
exec(@sql)

/*
INSERT INTO tabdata(header1,header2,header3) select studentid,studentfname,studentlname from sts.students
*/

我认为这将是您的解决方案: