[英]Create temp table from another temp table in Dynamic Query
我嘗試從另一個#temp表創建#temp表,然后通過錯誤進行處理。
Set @Query = 'Select Work_Order_No,ServiceCode,StageNo,ItemWeight,StagePercentage,FebLocation
INTO #TempMaster
FROM #Temp '
EXEC(@Query)
上面的查詢拋出錯誤
Invalid object name '#TempMaster'.
如果我執行此查詢
Set @Query = 'Select Work_Order_No,ServiceCode,StageNo,ItemWeight,StagePercentage,FebLocation
INTO ##TempMaster
FROM #Temp '
EXEC(@Query)
然后工作正常。 這兩個語句之間有什么不同。 第一個查詢引發錯誤而第二個查詢成功運行的原因是什么。
編輯之后,不同之處在於,在子作用域中創建的本地#temp
表在該作用域退出時會自動刪除,並且對父作用域不可見。 ##
前綴表是全局臨時表,並且在范圍退出時不會自動刪除。 相反,當創建的連接關閉並且當前沒有其他連接訪問它們時,它們將被丟棄。
無論如何,這里顯然沒有使用EXEC
要求,因此您可以通過使用最初發布的代碼來避免此問題。
SELECT Work_Order_No,
ServiceCode,
StageNo,
ItemWeight,
StagePercentage,
FebLocation
INTO #TempMaster
FROM #Temp
試試這個-
DECLARE @SQL NVARCHAR(MAX)
SELECT @SQL = '
IF OBJECT_ID (N''tempdb.dbo.##TempMaster'') IS NOT NULL
DROP TABLE ##TempMaster
SELECT Work_Order_No,ServiceCode,StageNo,ItemWeight,StagePercentage,FebLocation
INTO ##TempMaster
FROM #Temp'
EXEC sys.sp_executesql @SQL
這樣做:
set @Query = 'select Work_Order_No,ServiceCode,StageNo,ItemWeight,StagePercentage,FebLocation
INTO #TempMaster1
FROM tablename
select * into #t from #TempMaster1
drop table #TempMaster1
drop table #t '
exec (@Query)
如果在動態查詢中創建#temp表,則該表僅在該動態查詢中有效,並且在動態查詢執行完畢后將無法再使用它。
如果您確實需要動態填寫表格-您應該先創建表格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.