2010-02-28 34 views

回答

26

获取信息的存储过程:

SELECT * FROM INFORMATION_SCHEMA.ROUTINES 

为了找到存储过程具有一定的前缀开始(例如 “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%' 
+0

+1。然而,关于请求的前缀的事情。 – AxelEckenberger 2010-02-28 11:56:28

+0

我应该将WHERE SPECIFIC_NAME = ...更改为LIKE“MyTable_ *”吗? – 2010-02-28 11:59:52

+1

用2个更多示例更新了我的答案,以便通过某个前缀进行搜索。 – AdaTheDev 2010-02-28 12:02:28

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' 
-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 
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,但我想它在旧版本中工作过。

相关问题