MS SQL SERVER 2008 使用OBJECT_ID判断临时表是否存在

MS SQL SERVER 2008 使用OBJECT_ID判断临时表是否存在

我们在写sql 脚本的时候经常会用到临时表,有时间也需要根据临时表是否存在做一些逻辑处理。还好sql server已经集成了一个 Object_ID的函数,能够判断是否创建了临时表。使用挺方便的。
 
OBJECT_ID 参数:
  'object_name'
  要使用的对象。 object_name 的数据类型为  varchar 或  nvarchar。如果  object_name 的数据类型为  varchar,则它将隐式  转换为  nvarchar。可以选择是否指定数据库和架构名称。
  
   'object_type' 
       架构范围的对象类型。 object_type 的数据类型为  varchar 或  nvarchar。如果  object_type 的数据类型为  varchar,则它将    隐式转换为  nvarchar。有关对象类型的列表,请参阅  sys.objects (Transact-SQL) 中的  type 列。

  第一个Name就是我们创建的临时表的名称如果是临时表需要(tempdb.dbo.#mytemp),第二个type其实可以不用填写。我在使用的时候一般都是给第一个参数,也没深入了解第二个参数。

实例:

一、判断临时表是否存在,如果存在则删除。

?
--创建一个临时表
 
CREATE  TABLE  #mytemptable
(
     id INT
)
 
--判断临时表是否存在,存在则删除
 
IF OBJECT_ID(N 'tempdb.dbo.#mytemptable' ) IS  NOT  NULL
BEGIN
     DROP  TABLE  #mytemptable
     PRINT 1
END
ELSE
BEGIN
     PRINT 2
END
第一次执行结果:1

第二次执行结果:2

二、判断临时表是否存在。如果不删除将一直存在。

?
--创建一个临时表
 
CREATE  TABLE  #mytemptable(id INT )
 
--没有删除将一直存在
 
IF OBJECT_ID(N 'tempdb.dbo.#mytemptable' ) IS  NOT  NULL
 
BEGIN
 
     PRINT 1
 
END
 
ELSE
 
BEGIN
 
     PRINT 2
 
END

 执行结果:1

这个执行结果是在一个查询分析器里面执行的结果,开启一个就会有一个会话存在,如果没有关闭这个会话他将一直存在。

那么如果这个会话结束了没有手动释放资源,那么临时表是否还会占用空间。

待续未完。

 
 
 
标签:  SqlServer

你可能感兴趣的:(sqlserver)