我需要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