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

Ric*_*d77 4 t-sql sql-server

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

我想知道是否有一种方法可以通过知道名称来获取SPROC的定义?就像是:

SELECT commande(name_of_SPROC) --> Display the definition of the SPROC
Run Code Online (Sandbox Code Playgroud)

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

感谢您的帮助

小智 5

是的,有很多方法:

1.使用系统SP:sp_helptext:

sp_helptext 'your_sp_name'
Run Code Online (Sandbox Code Playgroud)

2. 使用 INFORMATION_SCHEMA 视图:

select ROUTINE_DEFINITION, * 
from INFORMATION_SCHEMA.ROUTINES 
where ROUTINE_NAME = 'your_sp_name';
Run Code Online (Sandbox Code Playgroud)

3.使用sys.sql_modules视图:

select definition, *
from sys.sql_modules 
where object_name(object_id) = 'your_sp_name'
Run Code Online (Sandbox Code Playgroud)

4.使用sys.syscomments视图:

select text, * 
from sys.syscomments 
where object_name(id) = 'your_sp_name'
Run Code Online (Sandbox Code Playgroud)

最好使用的是sp_helptext,它也非常方便和快速。我喜欢的另一个选项是sql_modules sys 视图。不要使用syscomments sys 视图,因为它将更大的 SP 分成多行,请检查此处