Я предлагаю использовать разные имена для временных таблиц.
По крайней мере, если вам действительно нужно создать временную таблицу в IF
и ELSE
.
Или удалить и создать временную таблицу только один раз в начале, до IF
.
К сожалению, компилятор запутывается из-за такой мелочи.
Когда T- Sql анализируется и оценивается, он игнорирует операторы потока управления, такие как IF
.
Так что создание та же самая временная таблица рассматривается в той же области и оценивается как проблема с дублирующимся объектом.
Пример обходного пути:
declare @i int = 0
if @i = 0
begin
if object_id('tempdb..#t1') is not null
drop table #t1;
create table #t1 (col1 int);
end
else
begin
if object_id('tempdb..#t2') is not null
drop table #t2;
create table #t2 (col1 int, col2 int);
end