第一天的碎碎念

今天项目进入了尾声(哇,第一天到就进入了尾声欸),在做一个重要的步骤,就是将测试数据库上面的表结构、数据以及存储过程等东西转移到生产库上面

然而,智障的我,在转移存储过程的时候,将老的存储过程迁了过去(存储过程在我迁移过后又做了修改),导致得重新迁移。而新的生产库上面已经有了大量的存储过程,所以得删除

于是,有了今天的内容:

怎么样批量删除存储过程

我们这里采用的是我在百度上找到的一段代码,去做的删除,不是原创,自己记录一下(添加注释便于自己理解)

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)的成就吧。。。

猜你喜欢

转载自www.cnblogs.com/JaimeLannister/p/9201641.html