zoukankan      html  css  js  c++  java
  • 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

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

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

    待续未完。

  • 相关阅读:
    Python mutilprocessing Processing 父子进程共享文件对象?
    BZOJ4836: [Lydsy1704月赛]二元运算
    博弈论刷题记录
    manacher(无讲解)
    UOJ_407_【IOI2018】狼人
    BZOJ_3935_Rbtree
    dsu on tree(无讲解)
    BZOJ_3744_Gty的妹子序列
    后缀数组(无讲解)
    虚树(无讲解)
  • 原文地址:https://www.cnblogs.com/Hui-Huang/p/MS-SQLSERVER.html
Copyright © 2011-2022 走看看