在SQL Server问题中添加列

时间:2011-07-05 03:30:11

标签: sql sql-server sql-server-2008

如何根据查询结果在临时表中添加新列。请考虑以下代码

declare @ctr int
set @ctr = 1

while (@ctr <= (select count(*) from #temp2)
begin
  alter table #temp
  add (select t2.Value from #temp2 t2 where t2.SysID = @ctr) (select t2.Type from #temp3 t3 where t3.SysID = @ctr)
end
这样的事情。我有一些语法错误,但据我所知,我的语法是正确的

2 个答案:

答案 0 :(得分:1)

据我所知,我认为你不能这样做。您最好的希望可能是创建一个全局临时表(双哈希##而不是单个哈希#),然后在全局临时表上使用sp_executesql来动态添加列。

答案 1 :(得分:1)

你必须使用动态SQL。这是我以前做过的事情:

SET @sql = 'ALTER TABLE ' + @TableName +
           'ADD ' + CONVERT(VARCHAR(100), @ColName) + ' ' + 
           CONVERT(VARCHAR(100), @TypeName) + 
           CASE WHEN @TypeName IN ('int', 'datetime', 'money', 'uniqueidentifier', 'bit')
                THEN '' ELSE '(' + CONVERT(VARCHAR(10), @Prec) + ')' END + ' NULL'

EXEC(@sql)

这可能并未涵盖所有可能的数据类型,但根据我的要求,这已经足够了。无论如何,一个好的起点