今天项目进入了尾声(哇,第一天到就进入了尾声欸),在做一个重要的步骤,就是将测试数据库上面的表结构、数据以及存储过程等东西转移到生产库上面
然而,智障的我,在转移存储过程的时候,将老的存储过程迁了过去(存储过程在我迁移过后又做了修改),导致得重新迁移。而新的生产库上面已经有了大量的存储过程,所以得删除
于是,有了今天的内容:
怎么样批量删除存储过程
我们这里采用的是我在百度上找到的一段代码,去做的删除,不是原创,自己记录一下(添加注释便于自己理解)
declare proccur cursor for //申明一个名叫 proccur 的游标
select [name] from sysobjects where name like 'Users_%' //找出系统表中Name列为Users开头的值
declare @procname varchar(100) // 申明一个参数
open proccur //打开游标
fetch next from proccur into @procname //返回结果集的第一行赋值给参数
while(@@FETCH_STATUS = 0) //游标读取下一条数据是否成功(判定时候还有下一行数据)
begin //开始循环
exec('drop proc ' + @procname) //执行删除的语句
print(@procname + '已被删除') //输出某个东西已经删除
fetch next from proccur into @procname //将下一行数据赋值给参数
end //结束循环
close proccur //关闭游标
deallocate proccur //删除游标,释放内存
这段代码主要是使用了游标来进行存储过程名称的更迭(循环),还有其他很多方法可以做到这个。值得注意的是,在表或者存储过程命名的时候,往往带有下划线,所以在模糊查询的时候,我总是会无脑的将下滑先给匹配进去,却忘了。。。下滑线也是通配符的一种。。。代表了任意一个字符,嗯,今天试了好多次才想起来,也是完成了 日常智障(1/1)的成就吧。。。