我需要SELECT循環多次使用臨時表,但我不能這樣做,因爲在SELECT INTO創建的表之後,您無法簡單地刪除因爲你不能刪除一個表並在同一批次中再次創建它。刪除和重新使用存儲過程中的臨時表
那麼如何刪除存儲過程中的表並重新創建它? 有沒有可能不使用臨時表?
這裏是我真正使用它應該是一個旋轉算法臨時表中的一個片段:
WHILE @offset<@NumDays BEGIN
SELECT
bg.*, j.ID, j.time, j.Status
INTO #TEMP1
FROM #TEMP2 AS bg
left outer join PersonSchedule j on bg.PersonID = j.PersonID and
j.TimeSlotDateTime = @StartDate + @offset
DROP TABLE #TEMP2;
SELECT * INTO #TEMP2 FROM #TEMP1
DROP TABLE #TEMP1
SET @offset = @offset + 1
END
爲什麼不使用truncate? – 2010-06-05 21:04:12
因爲表格結構會隨着每次迭代而改變。 – 2010-06-05 21:06:48
希望CTE能夠滿足您的需求。如果沒有,我可以想到涉及以NEWID()命名的動態SQL和全局臨時表的相當可怕的方式。 – 2010-06-06 12:05:02