Вы можете определить таблицу динамически так же, как вы динамически вставляете ее, но проблема в области временных таблиц. Например, этот код:
DECLARE @sql varchar(max)
SET @sql = 'CREATE TABLE #T1 (Col1 varchar(20))'
EXEC(@sql)
INSERT INTO #T1 (Col1) VALUES ('This will not work.')
SELECT * FROM #T1
вернется с ошибкой «Неверное имя объекта« # T1 ».» Это связано с тем, что временная таблица # T1 создается на «более низком уровне», чем блок выполнения кода. Для исправления используйте глобальную временную таблицу:
DECLARE @sql varchar(max)
SET @sql = 'CREATE TABLE ##T1 (Col1 varchar(20))'
EXEC(@sql)
INSERT INTO ##T1 (Col1) VALUES ('This will work.')
SELECT * FROM ##T1
Надеюсь, это поможет,
Джесси