我的数据库中有大约100个临时存储的proc。如何快速删除名称中包含"tempZZZ"的所有存储进程?
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'DROP PROCEDURE dbo.'
+ QUOTENAME(name) + ';
' FROM sys.procedures
WHERE name LIKE N'tempZZZ%'
AND
SCHEMA_NAME(schema_id) = N'dbo';
EXEC sp_executesql @sql;
一种方法是让SQL Server使用系统表生成SQL:
SELECT 'DROP PROCEDURE ['+name+']'
FROM sys.procedures
WHERE name LIKE '%tempZZZ%'
然后将其输出粘贴到SSMS窗口中并运行它。如果您在不同的架构中有过程,则可能需要对其进行修改。
警告:请确保在运行输出之前检查输出!