如何根据查询结果在临时表中添加新列。请考虑以下代码
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
这样的事情。我有一些语法错误,但据我所知,我的语法是正确的
答案 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)
这可能并未涵盖所有可能的数据类型,但根据我的要求,这已经足够了。无论如何,一个好的起点