использование новых столбцов во временной таблице, добавленной alter table, не работает - PullRequest
0 голосов
/ 28 марта 2019

У меня проблема с тем, что новый добавленный столбец нельзя использовать в дальнейших комментариях.

У меня есть временная таблица, построенная с помощью «select into», тогда мне нужно добавить столбец идентификаторов с помощью «alter»Таблица".Но когда я хочу использовать новый столбец в «соединении», я получаю сообщение об ошибке «Неверный столбец».обратите внимание, что эти команды могут работать отдельно.

Я думаю, причина в том, что новый столбец не найден компилятором и выдает ошибку перед его запуском.Есть ли решение для этого?

У меня есть эта проблема в SQL Server 2000 и, кажется, в более новой версии, проблема не существует.

create table #tmp_tb
(name varchar(4), val int)
insert into #tmp_tb values('ab',1);
insert into #tmp_tb values('abc',2);
select * from #tmp_tb
alter table #tmp_tb add id int NOT NULL IDENTITY(1,1);
select * from #tmp_tb
select id,name,val from #tmp_tb

Произошла ошибка:

Сообщение 207, Уровень 16, Состояние 3, Строка 9 Неверное имя столбца 'id'.

1 Ответ

0 голосов
/ 28 марта 2019

Заменить последнюю строку на

EXECUTE sp_executesql N'select id,name,val from #tmp_tb';

Действительно, парсер еще не знает о новом столбце. Проходя через sp_executesql, вы избегаете этого.

...