Это кажется относительно простым, но, по-видимому, это не так.
Мне нужно создать временную таблицу на основе существующей таблицы с помощью синтаксиса select:
SELECT * INTO #TEMPTABLE FROM EXISTING_TABLE
Проблема заключается в том, что существующее имя таблицы принимается с помощью параметра...
Я могу получить данные таблицы через:
execute ('SELECT * FROM ' + @tableName)
но как я могу жениться на двух, чтобы я мог выполнить результаты из выполнения непосредственно в таблицу temp.
Столбцы для каждой таблицы, которые будут использоваться для этого, не являются одинаковыми, поэтому создание таблицы temp до получения данных нецелесообразно.
Я открыт для любых предложений, кроме использования глобальной таблицы temp.
Update:
Это совершенно смешно, но мои оговорки в глобальной таблице temp состоят в том, что это многопользовательская платформа поддается решению, если таблица будет задерживаться в течение длительного периода времени...
Sooo.. просто чтобы пройти мимо этой части, которую я начал с помощью execute для создания глобальной таблицы temp.
execute('select * into ##globalDynamicFormTable from ' + @tsFormTable)
Затем я использую глобальную таблицу temp для загрузки локальной таблицы temp:
select * into #tempTable from ##globalDynamicFormTable
Затем я отбрасываю глобальную таблицу.
drop table ##globalDynamicFormTable
Это грязно, и мне это не нравится, но пока пока я не получу лучшее решение, его придется работать.
В конце:
Я думаю, что нет способа обойти это.
Лучшим ответом также является:
Создайте представление в команде выполнения и используйте это для загрузки локальной таблицы temp в хранимой процедуре.
Создайте глобальную временную таблицу в команде выполнения и используйте ее для загрузки локальной таблицы temp.
С учетом сказанного я, вероятно, просто придерживаюсь глобальной таблицы temp, потому что создание и удаление представлений проверяется в моей организации, и я уверен, что они будут подвергать сомнению, что если это начнется все время.
Спасибо!