如何判断SQL Server中当前的临时表是什么?

时间:2009-07-30 19:44:51

标签: sql-server sql-server-2005 sql-server-2000 temp-tables

我经常收到错误:

Msg 208, Level 16, State 0, Line 1
Invalid object name '#foo'.

Msg 3701, Level 11, State 5, Line 1
Cannot drop the table '#foo', because it does not exist in the system catalog.

我如何知道范围内有哪些临时表?他们显然没有像基本表那样出现在SSMS中。

2 个答案:

答案 0 :(得分:4)

您可以在尝试对其执行查询之前检查该表是否存在。

IF object_id('tempdb..#foo') IS NOT NULL 

答案 1 :(得分:1)

扩大布兰登的答案......

在SSMS查询窗口1中:

CREATE TABLE #foo (bar int)
GO
CREATE TABLE ##bar (foo int)
GO
SELECT object_id('tempdb..#foo'), object_id('tempdb..##bar')
GO

在窗口2中:

SELECT object_id('tempdb..#foo'), object_id('tempdb..##bar')
正如预期的那样,

##bar在两个会话中都可见。仅在本地会话中#foo