SQL Server 临时表的删除
关于临时表的删除,网上一搜结果一大把,但是根本用不了,都是瞎扯把删除表的代码贴上去,对付临时表根本没有用。最后被我搜到一位牛人的博客,在那里终于找到了答案。现在答案转载过来。原文地址如下:
http://www.cnblogs.com/mjgforever/archive/2007/08/09/849201.html
临时表与一般的表不同,它是保存到tempDb表中。临时表的表名与你所建的表名也不一样,因为他要为不同人的相同操作创建不同的临时表。
1、错误的删除操作:
--
错误的临时表删除操作,因为所在数据库不同
IF EXISTS ( SELECT * FROM sysobjects WHERE object_id = OBJECT_ID (N ' [dbo].[#tempTable] ' ) AND type in (N ' U ' ))
Begin
DROP TABLE [ dbo ] . [ tempTable ]
End
-- 错误的临时表删除操作,因为临时表名已变
if exists ( select * from tempdb.dbo.sysobjects where id = object_id (N ' [#temptable] ' ))
Begin
drop table #temptable
End
IF EXISTS ( SELECT * FROM sysobjects WHERE object_id = OBJECT_ID (N ' [dbo].[#tempTable] ' ) AND type in (N ' U ' ))
Begin
DROP TABLE [ dbo ] . [ tempTable ]
End
-- 错误的临时表删除操作,因为临时表名已变
if exists ( select * from tempdb.dbo.sysobjects where id = object_id (N ' [#temptable] ' ))
Begin
drop table #temptable
End
2、正确的删除方式:
--
正确的临时表删除操作
if object_id ( ' tempdb..#tempTable ' ) is not null Begin
drop table #tempTable
End
if object_id ( ' tempdb..#tempTable ' ) is not null Begin
drop table #tempTable
End