我想在動態查詢中創建一個臨時表並在以後使用它。它會從一個永久表創建:動態創建的臨時表不會持續
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;
是否有可能堅持一個動態創建的臨時表?
我測試過,它的工作原理。所以我想問題是動態查詢是在不同的會話或類似的東西中執行的?我不會使用全球臨時btw。 –
我在一些過程中將它們與所有的字符編碼執行一起使用,表名在這裏由NEW_ID()生成。我不喜歡那樣,但是有一些長時間運行復雜程序的特殊情況。 – bummi