如何把EXEC(@SQL)得到的結果集(列是動態的)插入到一張臨時表? 主要是列是動態的,沒有辦法先建立好表結構,請高手們幫忙,看看有什么辦法,謝謝!
uj5u.com熱心網友回復:
列數不定的話需要用select * INTO 臨時表這樣寫,試試全域臨時表吧DECLARE @SQL NVARCHAR(200)='select 1 as a,2 as b'
EXEC('select * into ##temp from('+@SQL+')t')
SELECT * from ##temp
DROP TABLE ##temp
uj5u.com熱心網友回復:
二月版主的想法不錯。不過, 需要注意的是如果是程式中呼叫, 出現并發呼叫的話就會有問題了。
因為全域臨時表是共用的, 如果并發呼叫同名稱會出現沖突。
所以這個全域臨時表的名稱最好是隨機產生的。
uj5u.com熱心網友回復:
直接SELECT INTO XXOO exec(@sql) 然后再從xxoo這個臨時表插入正式表,最后洗掉XXOO臨時表即可。uj5u.com熱心網友回復:
我也遇到這個問題了,各種辦法都嘗試了,都不行,怎樣將EXEC(@SQL)得到的結果集(列是動態的)插入到一張表里,然后再對這些資料進行處理呢uj5u.com熱心網友回復:
exec('select * into ##test from test where 1<>1')insert into ##test
exec('select * from test')
update ##test
set col1 = 2
select * from ##test
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/103291.html
標籤:疑難問題
下一篇:SQL 條件取數求助
