摘要:MSSQLSERVER2008使用OBJECT_ID判断临时表是否存在我们在写sql脚本的时候经常会用到临时表,有时间也需要根据临时表是否存在做一些逻辑处理。还好sqlserver已经集成了一个Object_ID的函数,能够判断是否创建了临时表。OBJECT_ID参数:'object_name'要使用的对象。object_type的数据类型为varchar或nvarchar。--创建一个临时表CREATETABLE#mytemptable--判断临时表是否存在,存在则删除IFOBJECT_IDISNOTNULLBEGINDROPTABLE#mytemptablePRINT1ENDELSEBEGINPRINT2END第一次执行结果:1第二次执行结果:2二、判断临时表是否存在。那么如果这个会话结束了没有手动释放资源,那么临时表是否还会占用空间。
我们在写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
这个执行结果是在一个查询分析器里面执行的结果,开启一个就会有一个会话存在,如果没有关闭这个会话他将一直存在。
那么如果这个会话结束了没有手动释放资源,那么临时表是否还会占用空间。
待续未完。