网上找了好多方法都不靠谱,尤其是百度百科的那个IF EXISTS (SELECT* FROM sys.views WHERE object_id = '[dbo].[视图名]',使用的时候直接报错,浪费我的时间

下面的方法可行,最起码判读存储过程的那个可行,我已经测试了,其它的没有测试

 1 --判断数据库是否存在 
 2 IF EXISTS(SELECT * FROM master.dbo.sysdatabases WHERE name=N'库名') 
 3 print 'exists' 
 4 ELSE 
 5 print 'not exists' 
 6 --------------- 
 7 -- 判断要创建的表名是否存在 
 8 IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[表名]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) 
 9 -- 删除表 
10 DROP TABLE [dbo].[表名] 
11 GO 
12 --------------- 
13 --判断要创建临时表是否存在 
14 IF Object_Id('Tempdb.dbo.#Test') IS NOT NULL 
15 BEGIN 
16 print '存在' 
17 END 
18 ELSE 
19 BEGIN 
20 print '不存在' 
21 END 
22 --------------- 
23 -- 判断要创建的存储过程名是否存在 
24 IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[存储过程名]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1) 
25 -- 删除存储过程 
26 DROP PROCEDURE [dbo].[存储过程名] 
27 GO 
28 --------------- 
29 -- 判断要创建的视图名是否存在 
30 IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[视图名]') AND OBJECTPROPERTY(id, N'IsView') = 1) 
31 -- 删除视图 
32 DROP VIEW [dbo].[视图名] 
33 GO 
34 --------------- 
35 -- 判断要创建的函数名是否存在 
36 IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[函数名]') AND xtype IN (N'FN', N'IF', N'TF')) 
37 -- 删除函数 
38 DROP FUNCTION [dbo].[函数名] 
39 GO 
40 IF col_length('表名', '列名') IS NULL 
41 print '不存在' 
42 SELECT 1 FROM sysobjects WHERE id IN (SELECT id FROM syscolumns WHERE name='列名') AND name='表名'
posted on 2012-05-03 11:41  siwei1988  阅读(454)  评论(0编辑  收藏  举报