[英]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;
普通的本地臨時表將不起作用,因為動態 SQL 會創建新的上下文。 該表位於該上下文中,並且在執行代碼時將不復存在,因此您不能在 Dynamic-SQL 之外使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.