目前,我们对脚本文件中的每个存储过程使用单独的a drop语句:

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MySP]')   
  AND type in (N'P', N'PC'))  
DROP PROCEDURE [dbo].[MySP] 

有没有办法一次把它们全部扔掉,或者循环扔掉?

推荐答案

大约是(在Delete All Procedures from a database using a Stored procedure in SQL Server岁时发现).

顺便说一句,这似乎是一件危险的事,只是一个 idea ...

declare @procName varchar(500)
declare cur cursor 

for select [name] from sys.objects where type = 'p'
open cur
fetch next from cur into @procName
while @@fetch_status = 0
begin
    exec('drop procedure [' + @procName + ']')
    fetch next from cur into @procName
end
close cur
deallocate cur

Sql相关问答推荐

平均SQL

获取每5分钟时间间隔的总和

Postgres,使用iLike运算符从json数组中搜索的工作方式与从常规表中搜索不同

Access 365将文本转换回BigInt

Select 非重复值并按条件排除行

在一个子查询中签入ID';S,如果未返回,则签入另一个子查询

仅当交叉应用返回单值时才更新记录

具有多个条件的SQL否定

如何在Postgres中为单值输入多行?

更正用于判断错误组合的SQL

在VB.NET中如何在MS Access数据库中创建SQL项目历史库存卡

根据时间值提取记录

获取主表条目,其中最新的辅助条目是 6 个月前

根据标识符将两行合并为一行

不同计数的 Postgres PIVOT 表

使用 XML 作为 SQL 表

统计重复记录的总数

具有多个表 JOINS 的 STRING_AGG 的替代方法 (SQL Server 2016)

识别SQL Server中的重复数字

如何使用SELECT语句进行左连接,并根据右表中的特定值过滤结果?