查看: 9|回复: 0

[教程] 快速删除DiscuzNT论坛数据表和存储过程

[复制链接]

4

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2010-7-2
发表于 2023-6-20 00:00:00 | 显示全部楼层 |阅读模式

本来想一个一个删除的,打开数据库一看那么多的表和存储过程,就放弃这种笨办法了,于是决定用SQL语句来搞定。代码如下: 

复制代码

代码如下:


-----------------------------删除数据表--------------------- 
DECLARE @au_lname VARCHAR(40),@SQLString NVARCHAR(500) 
DECLARE tb CURSOR FOR 
SELECT name FROM sysobjects WHERE xtype='U' and name like 'dnt%' 
OPEN tb 
-- Perform the FIRST FETCH. 
FETCH NEXT FROM tb INTO @au_lname 
-- CHECK @@FETCH_STATUS TO see IF there ARE ANY more ROWS TO FETCH. 
WHILE @@FETCH_STATUS = 0 
BEGIN 
-- This IS executed AS long AS the previous FETCH succeeds. 
FETCH NEXT FROM tb INTO @au_lname 
SET @SQLString='DROP TABLE '+ @au_lname 
EXEC sp_executesql @SQLString 
--DROP TABLE @au_lname 
END 
CLOSE tb 
DEALLOCATE tb 
GO 
-----------------------------删除存储过程--------------------- 
DECLARE @au_lname VARCHAR(40),@SQLString NVARCHAR(500) 
DECLARE tb CURSOR FOR 
SELECT name FROM sysobjects WHERE xtype='p' and name like 'dnt%' 
OPEN tb 
-- Perform the FIRST FETCH. 
FETCH NEXT FROM tb INTO @au_lname 
-- CHECK @@FETCH_STATUS TO see IF there ARE ANY more ROWS TO FETCH. 
WHILE @@FETCH_STATUS = 0 
BEGIN 
-- This IS executed AS long AS the previous FETCH succeeds. 
FETCH NEXT FROM tb INTO @au_lname 
SET @SQLString='DROP PROCEDURE '+ @au_lname 
EXEC sp_executesql @SQLString 
--DROP TABLE @au_lname 
END 
CLOSE tb 
DEALLOCATE tb 
GO 

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部