mssql sqlserver 使用sql脚本判断物理表、临时表是否存在的方法分享


摘要:
在存储过程的编写中,升级脚本的编写中,我们经常需要判断一张物理表或临时表是否存在,然后再做后续的操作,
下文分享使用sql脚本判断物理表或临时表是否存在的方法,如下所示:
实验环境:sql server 2008 R2

     ---例判断数据库"test"中是否存在物理表"tableTest"
     ---方法1:使用object_id检测表名是否返回相应的Id,
     ---存在ID,代表数据表存在指定的数据库中,反之不存在
       use test;
     go

    if object_id(N'tableTest',N'U') is not null
          print 'tableTest表存在'
     else 
         print 'tableTest表不存在'

     ---方法2:使用系统表dbo.SysObjects,检测系统对象中是否存在此表名
     USE [test] 
      GO 

       IF EXISTS(SELECT  * FROM dbo.SysObjects WHERE ID = object_id(N'[tableTest]') AND OBJECTPROPERTY(ID, 'IsTable') = 1) 
          PRINT 'tableTest表存在' 
       ELSE 
          PRINT'tableTest表不存在'

--------------------------------------------------------------------------------------------------------
     ---临时表是否存在的方法分享
     ---例:检测数据库test中是否存在临时表"tmpTableName" 
     ---方法1:使用tempdb中sysobjectsd对象检测临时表是否存在
     use [test];
      go

      if exists(select * from tempdb..sysobjects where id=object_id('tempdb..##tmpTableName'))
         PRINT 'tmpTableName临时表存在' 
      ELSE 
         PRINT'tmpTableName临时表不存在'


      ---方法1:使用object_id返回对象Id的方式检测临时表是否存在
     use [test];
     go

     if  object_id(N'tempdb..#tmpTableName')  is not null 
       PRINT 'tmpTableName临时表存在' 
     ELSE 
       PRINT'tmpTableName临时表不存在'