我正在研究一个拥有大量存储过程的数据库。令人沮丧的是,命名约定不一致。我花了一半的时间在对象资源管理器中寻找它们。
我想知道是否有办法通过知道名称来获得SPROC的定义?类似的东西:
SELECT commande(name_of_SPROC) --> Display the definition of the SPROC
任何可以帮助我获得SPROC定义的内容,而无需在 SQL Server Management Studio 的对象资源管理器中进行搜索。
感谢您的帮助
答案 0 :(得分:3)
你可以使用类似的东西,
sp_helptext '<sprocname>'
答案 1 :(得分:3)
系统过程{{1}}可用于返回存储过程代码。
答案 2 :(得分:2)
是的,有很多方法:
<强> 1。使用系统SP:sp_helptext:
sp_helptext 'your_sp_name'
<强> 2。使用INFORMATION_SCHEMA视图:
select ROUTINE_DEFINITION, *
from INFORMATION_SCHEMA.ROUTINES
where ROUTINE_NAME = 'your_sp_name';
第3。使用sys.sql_modules视图:
select definition, *
from sys.sql_modules
where object_name(object_id) = 'your_sp_name'
<强> 4。使用sys.syscomments视图:
select text, *
from sys.syscomments
where object_name(id) = 'your_sp_name'
最好使用的是 sp_helptext ,它也非常方便快捷。 我喜欢的其他选项是 sql_modules sys视图。 不要使用 syscomments sys视图,因为它会将更大的SP拆分为多行,check here。