如何按名称查找存储过程?

6

我只需要在我的数据库中搜索所有存储过程,查找其中名称包含“item”的存储过程。有什么建议吗?

我一直在尝试,但还没有达到预期的效果:

SELECT DISTINCT OBJECT_NAME(ID) FROM SysComments WHERE Text LIKE '%Item%'

@Aaron,是的,我指的是Routine_Name,我没有意识到我提出的建议可能已经过时并被更好的替代方案所取代。我两年前做过这个,我认为它仍然合适。我会删除我的评论。 - uncaught_exceptions
1
请参考@Martin的回答。如果您想要那些定义包含“item”的内容,请使用WHERE OBJECT_DEFINITION([object_id]) LIKE '%item%';。请不要使用syscomments,现在已经不是2000年了。 :-) - Aaron Bertrand
可能是按名称查找存储过程的重复问题。 - nathanchere
4个回答

6

查找名称中包含字符串“Item”的内容。

select schema_name(schema_id) as [schema], 
       name
from sys.procedures
where name like '%Item%'

1

您可以在Server 2008中使用新的查询:

use dbName
go

print object_definition(object_id('storedProcedureName'))

您将获得流程内容。


1

使用SQL时,您只能使用%和_通配符。如果您想要更强大的搜索功能,可以使用SchemaCrawler。SchemaCrawler可以使用与名称匹配的正则表达式搜索程序。您甚至可以使用正则表达式在程序定义中进行搜索。

Sualeh Fatehi,SchemaCrawler


1

这个也可以帮助您解决这个问题。当存在具有不同排序规则的数据库时,它也可以正常工作。您可以通过传递精确的存储过程名称或其部分名称来查找存储过程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接