VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1365|回复: 5

如何删除所有以"usp_"为前缀的存储过程,用SQL语句

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-12-16 16:00:02 | 显示全部楼层 |阅读模式
我想删除所有以 USP_ 这个前缀开头的存储过程 怎么写啊 DROP PROCEDURE 'usp_%' 这样写语法错误 怎么写才对  
回复

使用道具 举报

0

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-12-16 18:15:01 | 显示全部楼层
将所有USP_开头的存储过程名线选出来,放入游标。
declare c_1 cursor for select name from sysobjects where name like 'USP_%' and xtype='P'
遍历游标,创建动态SQL语句,删除存储过程
declare @pname nvarchar(100)
open c_1
fetch next from c_1 into @pname
while @@fetch_status=0
begin
    exec ('drop PROCEDURE '+@pname)
    fetch next from c_1 into @pname
end
close c_1
deallocate c_1
回复

使用道具 举报

1

主题

23

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
发表于 2020-12-16 20:30:02 | 显示全部楼层
如果过滤后的存储过程不是很多的话
试试:
declare @str varchar(8000),@T_sql varchar(8000)
set @str=''
select @str=@str+','+name from sysobjects where xtype='P' and name like 'usp_%'
select @str=stuff(@str,1,1,'')
set @T_sql='drop proc '
set @T_sql=@T_sql+replace(@str,',',' drop proc ')+''
select @T_sql
exec(@T_sql)
回复

使用道具 举报

0

主题

17

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-12-17 15:45:01 | 显示全部楼层
declare delcursor for select name from sysobjects where name like 'usp_%' and xtype='P'
declare @pname nvarchar(100)
open delcursor
fetch next from delcursor into @pname
while @@fetch_status=0
begin
    exec ('drop PROCEDURE '+@pname)
    fetch next from delcursor into @pname
end
close delcursor
deallocate delcursor
go
回复

使用道具 举报

0

主题

16

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-12-19 15:30:01 | 显示全部楼层
SELECT 'DROP PROC '+name
FROM sysobjects
WHERE Name LIKE 'usp_%'

--然后把打印出来的结果一句句执行
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-12-22 11:15:02 | 显示全部楼层
学习学习了
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表