Sql中判断"数据库"、"表"、"临时表"、"存储过程"和列"是否存在

 

代码
-- 判断数据库是否存在 
IF   EXISTS  ( SELECT   *   FROM  master..sysdatabases  WHERE  NAME  =   ' UAP5MC ' )
    
PRINT   ' exists  '  
else  
    
PRINT   ' not exists '  

-- 判断要创建表名是否存在 [两种方法]
--
方法一:
IF   EXISTS  ( select   *   From  sysobjects  Where  Name  = ' tblstmTaskList '   And  Type  In  ( ' S ' , ' U ' ))
 
PRINT   ' exists '
GO  
-- 方法二:
if     exists    ( select   *   from   sysobjects   where   id = object_id (N ' [dbo].tblstmTaskList ' and   OBJECTPROPERTY (id, N ' IsUserTable ' ) = 1 )
 
PRINT   ' exists '

-- 判断要创建临时表是否存在
IF    Object_Id ' UAP5MC.dbo.#Test ' )    Is     Not     NULL -- #Test 为临时表名 
  BEGIN  
  
print     ' 存在  '   
 
END  
ELSE  
 
BEGIN  
  
print     ' 不存在  '  
 
END  

-- 判断要创建的存储过程名是否存在 [两种方法]
--
方法一:
IF   EXISTS  ( Select   *   From  sysObjects  Where  Name  = ' SPService_Synctblcmbase_Server_SoftWare '   And  Type  In  ( ' S ' , ' P ' )) 
 
PRINT   ' exists '
-- 方法二:
if     exists ( select     1     from    sysobjects    where    id = object_id ( ' P_GetNewSeqVal_SeqT_FV ' )    and   xtype = ' P ' )   
begin    
 
drop   PROCEDURE  P_GetNewSeqVal_SeqT_FV;   
end

-- 判断列名是否存在 [两种方法]
IF    EXISTS  ( SELECT    O.NAME  AS  表名,C.NAME  AS  列名  FROM  SYSOBJECTS O 
 
INNER   JOIN  SYSCOLUMNS C  ON  O.ID = C.ID   WHERE  O.NAME =   ' tblstmTaskList '   AND  C.NAME    =   ' Title ' )
 
PRINT   ' EXISTS '
ELSE  
 
PRINT   ' NOT EXISTS '  
-- 第二种:
IF   COL_LENGTH ' tblstmTaskList ' , ' Title ' IS   NULL
    
PRINT   ' not exists '
ELSE
 
PRINT   ' exists '  

 

注:

 

对象类型:

AF = 聚合函数 (CLR)

C = CHECK 约束

D = DEFAULT(约束或独立)

F = FOREIGN KEY 约束

PK = PRIMARY KEY 约束

P = SQL 存储过程

PC = 程序集 (CLR) 存储过程

FN = SQL 标量函数

FS = 程序集 (CLR) 标量函数

FT = 程序集 (CLR) 表值函数

R = 规则(旧式,独立)

RF = 复制筛选过程

SN = 同义词

TR = SQL DML 触发器

IF = SQL 内联表值函数

TF = SQL 表值函数

U = 表(用户定义类型)

UQ = UNIQUE 约束

V = 视图

X = 扩展存储过程

IT = 内部表

你可能感兴趣的:(存储过程)