快速删除数据库表、视图、存储过程的sql语句

发布时间:2020-12-17编辑:脚本学堂
本篇文章介绍如何快速删除数据库中表、视图与存储过程的方法,提供普通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'

使用以上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.jb200.com 
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  -- 释放游标资源

使用游标,确实强悍,但性能上会有所损失,这个如何选择,大家自行把握吧。