在单个查询中重命名SQL中的所有存储过程



我在SQL Server数据库中有200多个存储过程。

我们的存储过程名称以SP_{CAPITAL_LETTER}开头。

现在我们要将所有存储过程的名称更改为proc_{{small_letter}}

例如:目前我们有一个名为SP_EMPLOYEE_LIST的存储过程,我们想将其重命名为proc_employee_list

我们有什么常用的方法可以使用T-SQL查询重命名所有存储过程,而不是逐个重命名它们吗?

谢谢,Hitesh

您可以转储一个脚本来完成所有这些,然后只运行脚本

select STRING_AGG(CAST(
'exec sp_rename @objname = N' + QUOTENAME(s.name + '.' + p.name, '''') + ', @newname = N' + QUOTENAME(LOWER(STUFF(p.name, 1, 3, 'proc_')), '''') + ', @objtype = ''OBJECT'';'
AS nvarchar(max)), '
')
from sys.procedures p
join sys.schemas s on s.schema_id = p.schema_id
where p.name like 'sp[_]%';

如果你是那种(愚蠢的(顽强的人,你甚至可以把它放进一个变量中,并通过sp_executesql运行它。

最新更新