Как получить список всех хранимых процедур и их параметров, начиная с определенного префикса? - PullRequest
13 голосов
/ 28 февраля 2010

Есть ли способ сделать запрос к базе данных и получить список всех хранимых процедур и их параметров?
Я использую SQL Server 2000.

Ответы [ 4 ]

28 голосов
/ 28 февраля 2010

Чтобы получить информацию о хранимых процедурах:

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%'
4 голосов
/ 28 февраля 2010

попробуйте это:

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 голос
/ 26 октября 2016

Чтобы показать список всех процедур и их параметров, это было бы так:

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, но я думаю, что это работает и в более старых версиях.

0 голосов
/ 01 июня 2016

следующий запрос возвращает процедуры, функции и фильтры по префиксу. Я не уверен, хотя, если это будет работать на 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
...