桑吉 發表於 2023-6-20 00:00:00

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

<p>
<span>本来想一个一个删除的,打开数据库一看那么多的表和存储过程,就放弃这种笨办法了,于是决定用SQL语句来搞定。代码如下: </span></p>
<div>
<p>
<span><u>复制代码</u></span></p>
<p>
代码如下:</p>
</div>
<p>
<br>
-----------------------------删除数据表--------------------- <br>
DECLARE @au_lname VARCHAR(40),@SQLString NVARCHAR(500) <br>
DECLARE tb CURSOR FOR <br>
SELECT name FROM sysobjects WHERE xtype='U' and name like 'dnt%' <br>
OPEN tb <br>
-- Perform the FIRST FETCH. <br>
FETCH NEXT FROM tb INTO @au_lname <br>
-- CHECK @@FETCH_STATUS TO see IF there ARE ANY more ROWS TO FETCH. <br>
WHILE @@FETCH_STATUS = 0 <br>
BEGIN <br>
-- This IS executed AS long AS the previous FETCH succeeds. <br>
FETCH NEXT FROM tb INTO @au_lname <br>
SET @SQLString='DROP TABLE '+ @au_lname <br>
EXEC sp_executesql @SQLString <br>
--DROP TABLE @au_lname <br>
END <br>
CLOSE tb <br>
DEALLOCATE tb <br>
GO <br>
-----------------------------删除存储过程--------------------- <br>
DECLARE @au_lname VARCHAR(40),@SQLString NVARCHAR(500) <br>
DECLARE tb CURSOR FOR <br>
SELECT name FROM sysobjects WHERE xtype='p' and name like 'dnt%' <br>
OPEN tb <br>
-- Perform the FIRST FETCH. <br>
FETCH NEXT FROM tb INTO @au_lname <br>
-- CHECK @@FETCH_STATUS TO see IF there ARE ANY more ROWS TO FETCH. <br>
WHILE @@FETCH_STATUS = 0 <br>
BEGIN <br>
-- This IS executed AS long AS the previous FETCH succeeds. <br>
FETCH NEXT FROM tb INTO @au_lname <br>
SET @SQLString='DROP PROCEDURE '+ @au_lname <br>
EXEC sp_executesql @SQLString <br>
--DROP TABLE @au_lname <br>
END <br>
CLOSE tb <br>
DEALLOCATE tb <br>
GO </p>
頁: [1]
查看完整版本: 快速删除DiscuzNT论坛数据表和存储过程