当前位置: 数据库>sqlserver
快速删除数据库表、视图、存储过程的sql语句
来源: 互联网 发布时间:2014-08-29
本文导语: 方法1,使用普通的sql语句 ---删除用户表 select 'DROP TABLE '+name from sysobjects where type = 'U' ---删除视图 select 'DROP VIEW '+name from sysobjects where type = 'V' ---删除存储过程 select 'DROP PROC '+name from sysobjects where type = 'P' 使用以上sql查...
方法1,使用普通的sql语句
---删除用户表
select 'DROP TABLE '+name from sysobjects where type = 'U'
---删除视图
select 'DROP VIEW '+name from sysobjects where type = 'V'
---删除存储过程
select 'DROP PROC '+name from sysobjects where type = 'P'
select 'DROP TABLE '+name from sysobjects where type = 'U'
---删除视图
select 'DROP VIEW '+name from sysobjects where type = 'V'
---删除存储过程
select 'DROP PROC '+name from sysobjects where type = 'P'
使用以上sql查询出相关的表、视图与存储过程,然后分别删除即可。
方法2,直接使用游标执行
代码示例:
DECLARE @Tb_Name varchar(30) --定义游标操作
DECLARE staff_cursor CURSOR FOR
SELECT [name] FROM sys.sysobjects
WHERE type='U'
-- 打开游标
OPEN staff_cursor
-- 提取记录数据
FETCH Next FROM staff_cursor Into @Tb_Name
WHILE @@fetch_status = 0
BEGIN
EXEC('DROP TABLE ' + @Tb_Name )
PRINT @Tb_Name
FETCH Next FROM staff_cursor Into @Tb_Name
END
CLOSE staff_cursor -- 关闭游标
DEALLOCATE staff_cursor -- 释放游标资源
---删除存储过程-www.
DECLARE @Sp_Name varchar(30) --定义游标操作
DECLARE @Tb_Count int
SET @Tb_Count = 0
DECLARE staff_cursor CURSOR FOR
SELECT [name] FROM sys.sysobjects
WHERE type='p' AND Category =0 --Category =0 表示
-- 打开游标
OPEN staff_cursor
-- 提取记录数据
FETCH Next FROM staff_cursor Into @Sp_Name
PRINT '开始删除存储过程'
WHILE @@fetch_status = 0
BEGIN
SET @Tb_Count = @Tb_Count + 1
EXEC('DROP PROCEDURE ' + @Sp_Name )
PRINT CONVERT(varchar(20),@Tb_Count) + ': ' + @Sp_Name
FETCH Next FROM staff_cursor Into @Sp_Name
END
print '总共删除' + CONVERT(varchar(20),@Tb_Count) + '个存储过程'
CLOSE staff_cursor -- 关闭游标
DEALLOCATE staff_cursor -- 释放游标资源
DECLARE staff_cursor CURSOR FOR
SELECT [name] FROM sys.sysobjects
WHERE type='U'
-- 打开游标
OPEN staff_cursor
-- 提取记录数据
FETCH Next FROM staff_cursor Into @Tb_Name
WHILE @@fetch_status = 0
BEGIN
EXEC('DROP TABLE ' + @Tb_Name )
PRINT @Tb_Name
FETCH Next FROM staff_cursor Into @Tb_Name
END
CLOSE staff_cursor -- 关闭游标
DEALLOCATE staff_cursor -- 释放游标资源
---删除存储过程-www.
DECLARE @Sp_Name varchar(30) --定义游标操作
DECLARE @Tb_Count int
SET @Tb_Count = 0
DECLARE staff_cursor CURSOR FOR
SELECT [name] FROM sys.sysobjects
WHERE type='p' AND Category =0 --Category =0 表示
-- 打开游标
OPEN staff_cursor
-- 提取记录数据
FETCH Next FROM staff_cursor Into @Sp_Name
PRINT '开始删除存储过程'
WHILE @@fetch_status = 0
BEGIN
SET @Tb_Count = @Tb_Count + 1
EXEC('DROP PROCEDURE ' + @Sp_Name )
PRINT CONVERT(varchar(20),@Tb_Count) + ': ' + @Sp_Name
FETCH Next FROM staff_cursor Into @Sp_Name
END
print '总共删除' + CONVERT(varchar(20),@Tb_Count) + '个存储过程'
CLOSE staff_cursor -- 关闭游标
DEALLOCATE staff_cursor -- 释放游标资源
使用游标,确实强悍,但性能上会有所损失,这个如何选择,大家自行把握吧。