Я хочу создать временную таблицу в динамическом запросе и использовать ее впоследствии. Он будет создан из постоянной таблицы:Динамически созданная временная таблица не сохраняется
create table t (a integer);
insert into t values (1);
И создание временной таблицы, как это:
declare @command varchar(max) = '
select *
into #t
from t
;
select * from #t;
';
execute (@command);
Когда @command выполняется в select from
временных работы таблицы.
Теперь, если выбрать из временной таблицы сообщение об ошибке показано ниже:
select * from #t;
Invalid object name '#t'
Если временная таблица создается вне динамического запроса он работает:
select top 0 *
into #t
from t
declare @command varchar(max) = '
insert into #t
select *
from t
';
execute (@command);
select * from #t;
Можно ли сохранить динамически создаваемую временную таблицу?
Я тестировал и работает. Поэтому я предполагаю, что проблема заключается в том, что динамический запрос выполняется в другом сеансе или что-то в этом роде? Я не буду использовать глобальную временную битву. –
Я использую их со всеми строковыми законами в некоторых процедурах, имена таблиц здесь генерируются из NEW_ID(). Мне это не нравится, но есть некоторые особые случаи длительных сложных процедур. – bummi