SQL Server中的临时表 - 如果查询需要很长时间才能完成,则会发生错误

时间:2013-08-13 11:18:37

标签: sql-server sql-server-2008 tsql

查看以下查询。

select * 
into TempTable
from MainTable

select * from TempTable
WAITFOR DELAY '00:00:10'

drop table TempTable

执行此查询后,我打开其他窗口并执行查询:

select * 
into TempTable
from MainTable

select * from TempTable

drop table TempTable

我收到以下错误:

  

数据库中已有一个名为“TempBucket”的对象。

假设它是存储过程的一部分,并且需要很长时间才能完成。如果再次调用此存储过程,则会发生此错误。如何解决此错误?

2 个答案:

答案 0 :(得分:4)

我假设您使用MSSQL DBMS作为帖子的标签。 使用真正的临时表:使用“#”作为表名称的前缀。 使用此方法,临时表将仅存在于创建它的过程的范围内。

select * 
into #TempTable
from MainTable

select * from #TempTable

实际上没有必要下降,但可能是更好的做法。

答案 1 :(得分:3)

试试这个 -

IF OBJECT_ID (N'tempdb.dbo.#TempTable', 'U') IS NOT NULL
   DROP TABLE #TempTable

SELECT *
INTO #TempTable
FROM dbo.MainTable

SELECT *
FROM #TempTable