簡體   English   中英

將動態查詢結果插入未定義的臨時表?

[英]Insert dynamic query results into un-defined temp table?

我正在定義一個長動態查詢,我想將它的結果插入到一個表中。 但是,我不想先定義表格。 這可能嗎?

查詢工作正常,如果我運行這個,我會看到預期的結果:

declare @query VARCHAR(MAX)
@query = 'SELECT
               --a bunch of stuff involving joins and pivots and such
         '
execute (@query)

但是這些嘗試選擇未定義的臨時表都不起作用:

--attempt 1
    declare @query VARCHAR(MAX)
    @query = 'SELECT * INTO #T1 (
                SELECT
                   --a bunch of stuff involving joins and pivots and such
                )
             '
    execute (@query)

--attempt 2
    declare @query VARCHAR(MAX)
    @query = 'SELECT
                   --a bunch of stuff involving joins and pivots and such
             '
    execute (@query)
    select * INTO #T1  execute (@query)

一種解決方法是使用全局臨時表:

SET @query = 'SELECT * INTO ##T1 FROM (
                SELECT
                   --a bunch of stuff involving joins and pivots and such
                )';

EXECUTE(@query);

SELECT *    -- reasign to local temp table to avoid reserving global ##T1 name
INTO #T1    -- if needed you can skip this part and work only on global table
FROM ##T1;

DROP TABLE ##T1;

SELECT *
FROM #T1;

LiveDemo

普通的本地臨時表將不起作用,因為動態 SQL 會創建新的上下文。 該表位於該上下文中,並且在執行代碼時將不復存在,因此您不能在 Dynamic-SQL 之外使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM