如何获取以特定前缀开头的所有存储过程及其参数的列表?

时间:2010-02-28 11:38:53

标签: sql-server stored-procedures sql-server-2000

有没有办法查询数据库并检索所有存储过程及其参数的列表?
我正在使用SQL Server 2000。

4 个答案:

答案 0 :(得分:28)

获取有关存储过程的信息:

SELECT * FROM INFORMATION_SCHEMA.ROUTINES 

要查找以特定前缀开头的sprocs(例如“usp”):

SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME LIKE 'usp%'

查找存储过程的所有参数:

SELECT * FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='YourSprocName'

查找以特定前缀开头的所有存储过程的所有参数:

SELECT * FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME LIKE 'usp%'

答案 1 :(得分:4)

试试这个:

select o.name,p.name from sys.all_parameters p inner join sys.all_objects o on p.object_id = o.object_id 
where o.type = 'P'

答案 2 :(得分:1)

要显示所有程序及其参数的列表,将采用以下方式:

SELECT o.name AS [Procedure name], p.name as [Parameter name] 
FROM sys.parameters p INNER JOIN sysobjects o ON p.object_id = o.id
WHERE o.name LIKE 'prefix%' AND o.xtype = 'P'

它适用于SQL Server 2016,但我猜它也适用于旧版本。

答案 3 :(得分:-1)

以下查询按前缀返回过程,函数和过滤器。 我不确定,如果它可以在sql server 2000上工作。 无论如何,我把它留在这里作为参考,因为它是一个很好的有用的查询。

SELECT SCHEMA_NAME(SCHEMA_ID) AS [Schema], 
SO.name AS [ObjectName],
SO.Type_Desc AS [ObjectType (UDF/SP)],
COALESCE(P.parameter_id,0) AS [ParameterID],
COALESCE(P.name, 'NO PARAMETER')  AS [ParameterName],
COALESCE(TYPE_NAME(P.user_type_id),'')  AS [ParameterDataType],
COALESCE(P.max_length,0) AS [ParameterMaxBytes],
COALESCE(P.is_output,0) AS [IsOutPutParameter]
FROM sys.objects AS SO
LEFT OUTER JOIN sys.parameters AS P 
ON SO.OBJECT_ID = P.OBJECT_ID
WHERE SO.OBJECT_ID IN ( SELECT OBJECT_ID 
FROM sys.objects
WHERE TYPE IN ('P','FN'))
AND SO.NAME LIKE 'U%'   --starting with a certain prefix 
ORDER BY [Schema], SO.name, P.parameter_id
GO