我在SQL中使用了一個動態查詢,該查詢返回了一個需要插入臨時表的大型數據集。要將sp_executesql的結果插入臨時表中
是否 從EXEC中SELECT INTO #tmp sp_executesql @query work?
我沒有嘗試,但我得到一個錯誤EXEC‘
「關鍵字附近有語法錯誤:’我知道,它的工作原理採用插入,但我不希望手動創建表,因爲它是有很多列的大桌子。有沒有替代方法,而不必手動創建臨時表?
我在SQL中使用了一個動態查詢,該查詢返回了一個需要插入臨時表的大型數據集。要將sp_executesql的結果插入臨時表中
是否 從EXEC中SELECT INTO #tmp sp_executesql @query work?
我沒有嘗試,但我得到一個錯誤EXEC‘
「關鍵字附近有語法錯誤:’我知道,它的工作原理採用插入,但我不希望手動創建表,因爲它是有很多列的大桌子。有沒有替代方法,而不必手動創建臨時表?
不,它不工作,你不能這樣做。但是,解決方法是在動態SQL創建臨時表之前,並在動態SQL中插入該表。然後,當你完成後,你會填滿桌子。
是的,我確實意識到它。除了創建100列的臨時表之外,無法想到任何其他選項。 – TheFallenOne
我想你可以嘗試做一個選擇硬編碼來創建臨時表,不知道代碼或者甚至可能。但如果是這樣,請選擇1行,然後截斷它並跟隨動態 –
IF OBJECT_ID('tempdb..##TmepTable') IS NOT NULL DROP TABLE ##TmepTable
CREATE TABLE ##TmepTable (TmpCol CHAR(1))
DECLARE @SQL NVARCHAR(max) =' IF OBJECT_ID(''tempdb..##TmepTable'') IS NOT NULL DROP TABLE ##TmepTable
SELECT * INTO ##TmepTable from [MyTableName]'
EXEC sp_executesql @SQL
SELECT Alias.* FROM ##TmepTable as Alias
IF OBJECT_ID('tempdb..##TmepTable') IS NOT NULL DROP TABLE ##TmepTable
[將存儲過程的結果插入臨時表中]的可能重複(http://stackoverflow.com/questions/653714/insert-results-of-a-stored-procedure-into-a-臨時表) – Siyual
@Siyual我注意到了,但它看起來太複雜了,只是簡單地插入到表中。 – TheFallenOne
您可以將select語句插入到您的商店proc中嗎? – Marcin