Проблема в том, что вы заполняете временную таблицу, а пытаетесь создать таблицу.SQL анализирует ваш скрипт и обнаруживает, что вы пытаетесь создать его в двух разных местах, и, таким образом, выдает ошибку.Недостаточно умно понять, что «путь выполнения» не может попасть в оба условия создания.Использование динамического SQL не будет работать;Я попытался
DECLARE @Command varchar(500)
DECLARE @Id int
SET @Id = 2
IF OBJECT_ID('tempdb..#MyTestTable') IS NOT NULL DROP TABLE #MyTestTable
IF (@Id = 2) BEGIN
SET @Command = 'SELECT ''ABC'' AS Letters INTO #MyTestTable'
END ELSE BEGIN
SET @Command = 'SELECT ''XYZ'' AS Letters INTO #MyTestTable'
END
EXECUTE (@Command)
select * from #MyTestTable
, но временная таблица длится столько времени, сколько динамический сеанс.Так что, увы, похоже, что вам нужно сначала объявить таблицу, а затем заполнить ее.Возможно, неудобный код для написания и поддержки, но он будет работать достаточно эффективно.