检索所有存储过程的列表

以下查询将返回数据库中所有存储过程的列表,其中包含有关每个存储过程的基本信息:

Version >= SQL Server 2005

SELECT *
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE'

ROUTINE_NAMEROUTINE_SCHEMAROUTINE_DEFINITION 列通常是最有用的。

Version >= SQL Server 2005

SELECT *
FROM sys.objects
WHERE type = 'P'

Version >= SQL Server 2005

SELECT *
FROM sys.procedures

请注意,此版本优于从 sys.objects 中选择,因为它包含附加列 is_auto_executedis_execution_replicatedis_repl_serializableskips_repl_constraints

Version < SQL Server 2005

SELECT *
FROM sysobjects
WHERE type = 'P'

请注意,输出包含许多永远不会与存储过程相关的列。

下一组查询将返回数据库中包含字符串’SearchTerm’的所有存储过程:

Version < SQL Server 2005

SELECT o.name
FROM syscomments c
INNER JOIN sysobjects o
    ON c.id=o.id
WHERE o.xtype = 'P'
    AND c.TEXT LIKE '%SearchTerm%'

Version >= SQL Server 2005

SELECT p.name
FROM sys.sql_modules AS m
INNER JOIN sys.procedures AS p
    ON m.object_id = p.object_id
WHERE definition LIKE '%SearchTerm%'