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 = 内部表

posted @ 2010-11-23 17:41  瑞君  Views(326)  Comments(0Edit  收藏  举报