Добавление столбца в проблемах SQL Server - PullRequest
0 голосов
/ 05 июля 2011

Как добавить новый столбец во временную таблицу на основе результата запроса.Рассмотрим код ниже

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 ]

1 голос
/ 05 июля 2011

вам придется использовать динамический 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)

это, вероятно, не охватывает все возможные типы данных, но для моих требований этого было достаточно.В любом случае, хорошее место для начала

1 голос
/ 05 июля 2011

Насколько я знаю, я не думаю, что вы можете сделать это.Ваша лучшая надежда может состоять в том, чтобы создать глобальную временную таблицу (двойной хэш ## вместо одиночного хеша #), а затем sp_executesql в вашей глобальной временной таблице для динамического добавления столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...