【转载】sql2005中判读视图、表、存储过程等是否存在的语句

本文提供了一套实用的SQL脚本,用于检查数据库中各类对象(如数据库、表、临时表、存储过程、视图及函数)的存在状态,并给出了相应的删除指令。这些脚本适用于SQL Server环境。

网上找了好多方法都不靠谱,尤其是百度百科的那个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='表名'

转载于:https://www.cnblogs.com/siwei1988/archive/2012/05/03/2480359.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值