是否可以使用名称获取存储过程的定义(无需查看对象资源管理器)

时间:2016-05-26 14:48:53

标签: sql-server tsql

我正在研究一个拥有大量存储过程的数据库。令人沮丧的是,命名约定不一致。我花了一半的时间在对象资源管理器中寻找它们。

我想知道是否有办法通过知道名称来获得SPROC的定义?类似的东西:

SELECT commande(name_of_SPROC) --> Display the definition of the SPROC

任何可以帮助我获得SPROC定义的内容,而无需在 SQL Server Management Studio 的对象资源管理器中进行搜索。

感谢您的帮助

3 个答案:

答案 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